]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Initialise perl library as documented in perl API. Backpatch to release 7.4.
authorAndrew Dunstan <andrew@dunslane.net>
Thu, 4 Jun 2009 16:00:33 +0000 (16:00 +0000)
committerAndrew Dunstan <andrew@dunslane.net>
Thu, 4 Jun 2009 16:00:33 +0000 (16:00 +0000)
src/pl/plperl/plperl.c

index 638c6ac7ffb6f5b19404100fb9a7b3a5a6939e4c..8937e2ddbc944cbf7e4f19ae7b41ad6333595690 100644 (file)
@@ -1,7 +1,7 @@
 /**********************************************************************
  * plperl.c - perl as a procedural language for PostgreSQL
  *
- *       $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.123.2.4 2008/01/22 20:19:53 adunstan Exp $
+ *       $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.123.2.5 2009/06/04 16:00:33 adunstan Exp $
  *
  **********************************************************************/
 
@@ -380,6 +380,8 @@ plperl_init_interp(void)
                "", "-e", PERLBOOT
        };
 
+       int nargs = 3;
+
 #ifdef WIN32
 
        /*
@@ -422,6 +424,11 @@ plperl_init_interp(void)
        save_time = loc ? pstrdup(loc) : NULL;
 #endif
 
+#ifdef PERL_SYS_INIT3
+       /* only call this the first time through, as per perlembed man page */
+       if (interp_state == INTERP_NONE)
+               PERL_SYS_INIT3(&nargs, (char ***) &embedding, NULL);
+#endif
 
        plperl_held_interp = perl_alloc();
        if (!plperl_held_interp)
@@ -429,7 +436,7 @@ plperl_init_interp(void)
 
        perl_construct(plperl_held_interp);
        perl_parse(plperl_held_interp, plperl_init_shared_libs, 
-                          3, embedding, NULL);
+                          nargs, embedding, NULL);
        perl_run(plperl_held_interp);
 
        if (interp_state == INTERP_NONE)