dougm 01/11/01 15:50:32 Modified: src/modules/perl mod_perl.c modperl_interp.c modperl_perl.c modperl_perl.h Log: moving perl_destruct() and releated items into modperl_perl_destruct() wrapper Revision Changes Path 1.93 +1 -3 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.92 retrieving revision 1.93 diff -u -r1.92 -r1.93 --- mod_perl.c 2001/10/13 19:11:32 1.92 +++ mod_perl.c 2001/11/01 23:50:32 1.93 @@ -9,12 +9,10 @@ handles = modperl_xs_dl_handles_get(aTHX_ cdata->pool); - PL_perl_destruct_level = 2; MP_TRACE_i(MP_FUNC, "destroying interpreter=0x%lx\n", (unsigned long)perl); - perl_destruct(perl); - perl_free(perl); + modperl_perl_destruct(perl); if (handles) { modperl_xs_dl_handles_close(cdata->pool, handles); 1.37 +1 -12 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.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- modperl_interp.c 2001/10/21 22:10:11 1.36 +++ modperl_interp.c 2001/11/01 23:50:32 1.37 @@ -83,9 +83,6 @@ MP_TRACE_i(MP_FUNC, "*error - still in use!*\n"); } - PERL_SET_CONTEXT(interp->perl); - PL_perl_destruct_level = 2; - /* we cant use interp->mip->ap_pool without locking * apr_pool_create() will mutex lock for us * XXX: could roll something without using apr_pool_t @@ -93,16 +90,8 @@ */ (void)apr_pool_create(&p, NULL); handles = modperl_xs_dl_handles_get(aTHX_ p); - - perl_destruct(interp->perl); - /* XXX: big bug in 5.6.1 fixed in 5.7.2+ - * XXX: see CLONEf_CLONE_HOST perl_clone() flag - * XXX: try to find a workaround for 5.6.1 - */ -#ifndef WIN32 - perl_free(interp->perl); -#endif + modperl_perl_destruct(interp->perl); if (handles) { modperl_xs_dl_handles_close(p, handles); 1.7 +19 -0 modperl-2.0/src/modules/perl/modperl_perl.c Index: modperl_perl.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- modperl_perl.c 2001/10/21 05:46:47 1.6 +++ modperl_perl.c 2001/11/01 23:50:32 1.7 @@ -82,3 +82,22 @@ modperl_perl_init_ids(aTHX_ &ids); #endif } + +void modperl_perl_destruct(PerlInterpreter *perl) +{ + dTHXa(perl); + + PERL_SET_CONTEXT(perl); + + PL_perl_destruct_level = 2; + + perl_destruct(perl); + + /* XXX: big bug in 5.6.1 fixed in 5.7.2+ + * XXX: see CLONEf_CLONE_HOST perl_clone() flag + * XXX: try to find a workaround for 5.6.1 + */ +#ifndef WIN32 + perl_free(perl); +#endif +} 1.7 +2 -0 modperl-2.0/src/modules/perl/modperl_perl.h Index: modperl_perl.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- modperl_perl.h 2001/10/21 05:46:47 1.6 +++ modperl_perl.h 2001/11/01 23:50:32 1.7 @@ -11,4 +11,6 @@ void modperl_perl_init_ids_server(server_rec *s); +void modperl_perl_destruct(PerlInterpreter *perl); + #endif /* MODPERL_PERL_H */