aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plperl/plperl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plperl/plperl.c')
-rw-r--r--src/pl/plperl/plperl.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index d820d6484dc..f691f0d49fd 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -218,7 +218,7 @@ static void
plperl_init_safe_interp(void)
{
- char *embedding[] = { "", "-e", "BEGIN { use DynaLoader; require Safe;}", "0" };
+ char *embedding[] = { "", "-e", "use DynaLoader; require Safe; SPI::bootstrap()", "0" };
plperl_safe_interp = perl_alloc();
if (!plperl_safe_interp)
@@ -235,10 +235,6 @@ plperl_init_safe_interp(void)
************************* ***********************************/
plperl_proc_hash = newHV();
- /************************************************************
- * Install the commands for SPI support in the safe interpreter
- * Someday.
- ************************************************************/
}
@@ -356,6 +352,7 @@ plperl_create_sub(SV *s) {
extern void boot_DynaLoader _((CV* cv));
extern void boot_Opcode _((CV* cv));
+extern void boot_SPI _((CV* cv));
extern void
plperl_init_shared_libs(void)
@@ -363,6 +360,7 @@ plperl_init_shared_libs(void)
char *file = __FILE__;
newXS("DynaLoader::bootstrap", boot_DynaLoader, file);
newXS("Opcode::bootstrap", boot_Opcode, file);
+ newXS("SPI::bootstrap", boot_SPI, file);
}
/**********************************************************************
@@ -574,6 +572,7 @@ plperl_func_handler(FmgrInfo *proinfo,
proc_internal_def = newSVpvf(
"$::x = new Safe;"
"$::x->permit_only(':default');"
+ "$::x->share(qw[&elog &DEBUG &NOTICE &NOIND &ERROR]);"
"use strict;"
"return $::x->reval( q[ sub { %s } ]);", proc_source);