stas 2004/04/06 19:56:30
Modified: src/modules/perl modperl_perl_global.c modperl_perl_global.h
Log:
bug fix: PL_endav could be uninitialized
Revision Changes Path
1.22 +7 -3 modperl-2.0/src/modules/perl/modperl_perl_global.c
Index: modperl_perl_global.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -u -r1.21 -r1.22
--- modperl_perl_global.c 2 Apr 2004 02:17:45 -0000 1.21
+++ modperl_perl_global.c 7 Apr 2004 02:56:30 -0000 1.22
@@ -21,7 +21,7 @@
globals->inc.gv = PL_incgv;
globals->defout.gv = PL_defoutgv;
globals->rs.sv = &PL_rs;
- globals->end.av = PL_endav;
+ globals->end.av = &PL_endav;
globals->end.key = MP_MODGLOBAL_END;
}
@@ -233,13 +233,17 @@
static void
modperl_perl_global_avcv_save(pTHX_ modperl_perl_global_avcv_t *avcv)
{
- modperl_perl_global_avcv_tie(aTHX_ avcv->key, avcv->av);
+ if (!*avcv->av) {
+ *avcv->av = newAV();
+ }
+
+ modperl_perl_global_avcv_tie(aTHX_ avcv->key, *avcv->av);
}
static void
modperl_perl_global_avcv_restore(pTHX_ modperl_perl_global_avcv_t *avcv)
{
- modperl_perl_global_avcv_untie(aTHX_ avcv->av);
+ modperl_perl_global_avcv_untie(aTHX_ *avcv->av);
}
/*
1.14 +1 -1 modperl-2.0/src/modules/perl/modperl_perl_global.h
Index: modperl_perl_global.h
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -u -r1.13 -r1.14
--- modperl_perl_global.h 2 Apr 2004 02:17:45 -0000 1.13
+++ modperl_perl_global.h 7 Apr 2004 02:56:30 -0000 1.14
@@ -28,7 +28,7 @@
} modperl_modglobal_key_e;
typedef struct {
- AV *av;
+ AV **av;
modperl_modglobal_key_e key;
} modperl_perl_global_avcv_t;