geoff 2003/09/13 13:35:33
Modified: src/modules/perl modperl_callback.c modperl_filter.c modperl_interp.h Log: balance interpreter select/putback Reviewed by: stas Revision Changes Path 1.57 +1 -4 modperl-2.0/src/modules/perl/modperl_callback.c Index: modperl_callback.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- modperl_callback.c 19 Aug 2003 05:01:22 -0000 1.56 +++ modperl_callback.c 13 Sep 2003 20:35:33 -0000 1.57 @@ -249,10 +249,7 @@ SvREFCNT_dec((SV*)av_args); #ifdef USE_ITHREADS - if (interp && MpInterpPUTBACK(interp)) { - /* PerlInterpScope handler */ - modperl_interp_unselect(interp); - } + MP_dINTERP_PUTBACK(interp); #endif return status; 1.67 +4 -0 modperl-2.0/src/modules/perl/modperl_filter.c Index: modperl_filter.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.c,v retrieving revision 1.66 retrieving revision 1.67 diff -u -r1.66 -r1.67 --- modperl_filter.c 20 Aug 2003 23:10:09 -0000 1.66 +++ modperl_filter.c 13 Sep 2003 20:35:33 -0000 1.67 @@ -359,6 +359,8 @@ SvREFCNT_dec((SV*)args); + MP_dINTERP_PUTBACK(interp); + MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT "return: %d\n", handler->name, status); @@ -428,6 +430,8 @@ else { MP_FAILURE_CROAK(modperl_output_filter_flush(filter)); } + + MP_dINTERP_PUTBACK(interp); MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT "return: %d\n", handler->name, status); 1.19 +7 -0 modperl-2.0/src/modules/perl/modperl_interp.h Index: modperl_interp.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- modperl_interp.h 27 Aug 2002 01:43:25 -0000 1.18 +++ modperl_interp.h 13 Sep 2003 20:35:33 -0000 1.19 @@ -50,6 +50,11 @@ interp = modperl_interp_select(r, c, s); \ aTHX = interp->perl +#define MP_dINTERP_PUTBACK(interp) \ + if (interp && MpInterpPUTBACK(interp)) { \ + modperl_interp_unselect(interp); \ + } + #define MP_aTHX aTHX apr_status_t modperl_interp_pool_destroy(void *data); @@ -71,6 +76,8 @@ #else #define MP_dINTERP_SELECT(r, c, s) dNOOP + +#define MP_dINTERP_PUTBACK(interp) dNOOP #define MP_aTHX 0