summaryrefslogtreecommitdiffstats
path: root/database/postgresql/perl514.patch
diff options
context:
space:
mode:
Diffstat (limited to 'database/postgresql/perl514.patch')
-rw-r--r--database/postgresql/perl514.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/database/postgresql/perl514.patch b/database/postgresql/perl514.patch
new file mode 100644
index 0000000000..2b85ffebb7
--- /dev/null
+++ b/database/postgresql/perl514.patch
@@ -0,0 +1,35 @@
+*** src/pl/plperl/plperl.c.orig
+--- src/pl/plperl/plperl.c
+***************
+*** 926,932 **** plperl_trusted_init(void)
+ if (!isGV_with_GP(sv) || !GvCV(sv))
+ continue;
+ SvREFCNT_dec(GvCV(sv)); /* free the CV */
+! GvCV(sv) = NULL; /* prevent call via GV */
+ }
+ hv_clear(stash);
+
+--- 926,932 ----
+ if (!isGV_with_GP(sv) || !GvCV(sv))
+ continue;
+ SvREFCNT_dec(GvCV(sv)); /* free the CV */
+! GvCV_set(sv, NULL); /* prevent call via GV */
+ }
+ hv_clear(stash);
+
+*** src/pl/plperl/plperl.h.orig
+--- src/pl/plperl/plperl.h
+***************
+*** 49,54 ****
+--- 49,59 ----
+ (U32)HeKUTF8(he))
+ #endif
+
++ /* supply GvCV_set if it's missing - ppport.h doesn't supply it, unfortunately */
++ #ifndef GvCV_set
++ #define GvCV_set(gv, cv) (GvCV(gv) = cv)
++ #endif
++
+ /* declare routines from plperl.c for access by .xs files */
+ HV *plperl_spi_exec(char *, int);
+ void plperl_return_next(SV *);