pardon my being away, but does this mean that the earlier (possible) fix
Apache::ModuleConfig->get($r, __PACKAGE__)
was not the cause of the error, or that it was and the __PACKAGE__ part is
not necessary now?
I was wondering whether to fix my calls for people who weren't up to cvs
speed...
--Geoff
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Friday, September 22, 2000 2:52 PM
> To: [EMAIL PROTECTED]
> Subject: cvs commit: modperl/src/modules/perl mod_perl.h perl_config.c
>
>
> dougm 00/09/22 11:52:04
>
> Modified: . Changes
> src/modules/perl mod_perl.h perl_config.c
> Log:
> plug leak in DIR_MERGE
> rename mod_perl_cleanup_av -> mod_perl_cleanup_sv
>
> Revision Changes Path
> 1.517 +2 -0 modperl/Changes
>
> Index: Changes
> ===================================================================
> RCS file: /home/cvs/modperl/Changes,v
> retrieving revision 1.516
> retrieving revision 1.517
> diff -u -r1.516 -r1.517
> --- Changes 2000/09/13 07:48:55 1.516
> +++ Changes 2000/09/22 18:51:52 1.517
> @@ -10,6 +10,8 @@
>
> =item 1.24_01-dev
>
> +plug leak in DIR_MERGE, thanks to Matt Sergeant for the spot
> +
> fixes to run and pass 'make test' on ActivePerl [Randy
> Kobes, Gerald Richter]
>
> Makefile.PL:post_initialize fix for win32, thanks to john
> sterling for
>
>
>
> 1.103 +1 -1 modperl/src/modules/perl/mod_perl.h
>
> Index: mod_perl.h
> ===================================================================
> RCS file: /home/cvs/modperl/src/modules/perl/mod_perl.h,v
> retrieving revision 1.102
> retrieving revision 1.103
> diff -u -r1.102 -r1.103
> --- mod_perl.h 2000/08/15 19:36:33 1.102
> +++ mod_perl.h 2000/09/22 18:51:59 1.103
> @@ -1132,7 +1132,7 @@
> void perl_setup_env(request_rec *r);
> SV *perl_bless_request_rec(request_rec *);
> void perl_set_request_rec(request_rec *);
> -void mod_perl_cleanup_av(void *data);
> +void mod_perl_cleanup_sv(void *data);
> void mod_perl_cleanup_handler(void *data);
> void mod_perl_end_cleanup(void *data);
> void mod_perl_register_cleanup(request_rec *r, SV *sv);
>
>
>
> 1.102 +18 -11 modperl/src/modules/perl/perl_config.c
>
> Index: perl_config.c
> ===================================================================
> RCS file: /home/cvs/modperl/src/modules/perl/perl_config.c,v
> retrieving revision 1.101
> retrieving revision 1.102
> diff -u -r1.101 -r1.102
> --- perl_config.c 2000/08/15 19:36:33 1.101
> +++ perl_config.c 2000/09/22 18:52:00 1.102
> @@ -436,7 +436,7 @@
> sva = newSVpv(arg,0);
> if(!*cmd) {
> *cmd = newAV();
> - register_cleanup(p, (void*)*cmd, mod_perl_cleanup_av,
> mod_perl_noop);
> + register_cleanup(p, (void*)*cmd, mod_perl_cleanup_sv,
> mod_perl_noop);
> MP_TRACE_d(fprintf(stderr, "init `%s' stack\n", hook));
> }
> MP_TRACE_d(fprintf(stderr, "perl_cmd_push_handlers:
> @%s, '%s'\n", hook, arg));
> @@ -823,13 +823,13 @@
> return NULL;
> }
>
> -void mod_perl_cleanup_av(void *data)
> +void mod_perl_cleanup_sv(void *data)
> {
> - AV *av = (AV*)data;
> - if(SvREFCNT((SV*)av)) {
> - MP_TRACE_g(fprintf(stderr, "cleanup_av: SvREFCNT(0x%lx)==%d\n",
> - (unsigned long)av, (int)SvREFCNT((SV*)av)));
> - SvREFCNT_dec((SV*)av);
> + SV *sv = (SV*)data;
> + if (SvREFCNT(sv)) {
> + MP_TRACE_g(fprintf(stderr, "cleanup_sv:
> SvREFCNT(0x%lx)==%d\n",
> + (unsigned long)sv, (int)SvREFCNT(sv)));
> + SvREFCNT_dec(sv);
> }
> }
>
> @@ -929,7 +929,7 @@
> *basevp = (mod_perl_perl_dir_config *)basev,
> *addvp = (mod_perl_perl_dir_config *)addv;
>
> - SV *sv,
> + SV *sv=Nullsv,
> *basesv = basevp ? basevp->obj : Nullsv,
> *addsv = addvp ? addvp->obj : Nullsv;
>
> @@ -958,16 +958,23 @@
> if((perl_eval_ok(NULL) == OK) && (count == 1)) {
> sv = POPs;
> ++SvREFCNT(sv);
> - mrg->obj = sv;
> mrg->pclass = SvCLASS(sv);
> }
> PUTBACK;
> FREETMPS;LEAVE;
> }
> else {
> - mrg->obj = newSVsv(basesv);
> - mrg->pclass = basevp->pclass;
> + sv = newSVsv(basesv);
> + mrg->pclass = basevp->pclass;
> }
> +
> + if (sv) {
> + mrg->obj = sv;
> + register_cleanup(p, (void*)mrg,
> + perl_perl_cmd_cleanup, mod_perl_noop);
> +
> + }
> +
> return (void *)mrg;
> }
>
>
>
>
>