dougm 2002/06/15 18:07:37 Modified: src/modules/perl mod_perl.c mod_perl.h modperl_interp.c Log: integrate modperl_perl_pp module Revision Changes Path 1.126 +4 -55 modperl-2.0/src/modules/perl/mod_perl.c Index: mod_perl.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v retrieving revision 1.125 retrieving revision 1.126 diff -u -r1.125 -r1.126 --- mod_perl.c 15 Jun 2002 20:59:06 -0000 1.125 +++ mod_perl.c 16 Jun 2002 01:07:37 -0000 1.126 @@ -20,6 +20,8 @@ modperl_env_unload(); + modperl_perl_pp_unset_all(); + return APR_SUCCESS; } #endif @@ -44,66 +46,11 @@ apr_pool_t *p = MP_boot_data.p; \ server_rec *s = MP_boot_data.s -#if defined(USE_ITHREADS) && defined(MP_PERL_5_6_x) -# define MP_REFGEN_FIXUP -#endif - -#ifdef MP_REFGEN_FIXUP - -/* - * nasty workaround for bug fixed in bleedperl (11536 + 11553) - * XXX: when 5.8.0 is released + stable, we will require 5.8.0 - * if ithreads are enabled. - */ -static OP * (*MP_pp_srefgen_ptr)(pTHX) = NULL; - -static OP *modperl_pp_srefgen(pTHX) -{ - dSP; - OP *o; - SV *sv = *SP; - - if (SvPADTMP(sv) && IS_PADGV(sv)) { - /* prevent S_refto from making a copy of the GV, - * tricking it to SvREFCNT_inc and point to this one instead. - */ - SvPADTMP_off(sv); - } - else { - sv = Nullsv; - } - - /* o = Perl_pp_srefgen(aTHX) */ - o = MP_pp_srefgen_ptr(aTHX); - - if (sv) { - /* restore original flags */ - SvPADTMP_on(sv); - } - - return o; -} - -static void modperl_refgen_ops_fixup(void) -{ - /* XXX: OP_REFGEN suffers a similar problem */ - if (!MP_pp_srefgen_ptr) { - MP_pp_srefgen_ptr = PL_ppaddr[OP_SREFGEN]; - PL_ppaddr[OP_SREFGEN] = MEMBER_TO_FPTR(modperl_pp_srefgen); - } -} - -#endif /* MP_REFGEN_FIXUP */ - static void modperl_boot(pTHX_ void *data) { MP_dBOOT_DATA; MP_dSCFG(s); int i; - -#ifdef MP_REFGEN_FIXUP - modperl_refgen_ops_fixup(); -#endif modperl_env_clear(aTHX); @@ -256,6 +203,8 @@ /* how silly */ return; } + + modperl_perl_pp_set_all(); modperl_env_init(); 1.46 +1 -0 modperl-2.0/src/modules/perl/mod_perl.h Index: mod_perl.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- mod_perl.h 15 Jun 2002 02:01:20 -0000 1.45 +++ mod_perl.h 16 Jun 2002 01:07:37 -0000 1.46 @@ -17,6 +17,7 @@ #include "modperl_flags.h" #include "modperl_hooks.h" #include "modperl_perl_global.h" +#include "modperl_perl_pp.h" /* both perl and apr have largefile support enabled */ #define MP_LARGE_FILES_ENABLED \ 1.45 +2 -0 modperl-2.0/src/modules/perl/modperl_interp.c Index: modperl_interp.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- modperl_interp.c 13 Jun 2002 03:05:06 -0000 1.44 +++ modperl_interp.c 16 Jun 2002 01:07:37 -0000 1.45 @@ -162,6 +162,8 @@ modperl_env_unload(); + modperl_perl_pp_unset_all(); + return APR_SUCCESS; }