35 lines
923 B
Diff
35 lines
923 B
Diff
*** src/pl/plperl/plperl.c
|
|
--- src/pl/plperl/plperl.c
|
|
***************
|
|
*** 700,706 **** 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);
|
|
/* invalidate assorted caches */
|
|
--- 700,706 ----
|
|
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);
|
|
/* invalidate assorted caches */
|
|
*** src/pl/plperl/plperl.h
|
|
--- src/pl/plperl/plperl.h
|
|
***************
|
|
*** 43,48 ****
|
|
--- 43,53 ----
|
|
#undef bool
|
|
#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
|
|
+
|
|
/* routines from spi_internal.c */
|
|
int spi_DEBUG(void);
|
|
int spi_LOG(void);
|