Initialise perl library as documented in perl API. Backpatch to release 7.4.
authorAndrew Dunstan <andrew@dunslane.net>
Thu, 4 Jun 2009 15:59:55 +0000 (15:59 +0000)
committerAndrew Dunstan <andrew@dunslane.net>
Thu, 4 Jun 2009 15:59:55 +0000 (15:59 +0000)
src/pl/plperl/plperl.c

index 2127a2369fb716f84803b39f5464223335d06217..9aa92bb3beb92da1738408773a8c7779a51f23ef 100644 (file)
@@ -399,6 +399,8 @@ plperl_init_interp(void)
                "", "-e", PERLBOOT
        };
 
+       int nargs = 3;
+
 #ifdef WIN32
 
        /*
@@ -442,13 +444,19 @@ plperl_init_interp(void)
 #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)
                elog(ERROR, "could not allocate Perl interpreter");
 
        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)