dougm 01/11/14 17:25:00
Modified: src/modules/perl modperl_perl_global.c
Log:
propagate SvMAGIC of original HV in modperl_perl_global_gvhv_save()
Revision Changes Path
1.14 +7 -0 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.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- modperl_perl_global.c 2001/10/14 18:00:23 1.13
+++ modperl_perl_global.c 2001/11/15 01:25:00 1.14
@@ -175,6 +175,7 @@
{
U32 mg_flags;
HV *hv = GvHV(gvhv->gv);
+ MAGIC *mg = SvMAGIC(hv);
/*
* there should only be a small number of entries in %ENV
@@ -194,6 +195,12 @@
/* reapply magic flags */
MP_magical_tie(hv, mg_flags);
MP_magical_tie(gvhv->tmphv, mg_flags);
+
+ if (mg && mg->mg_type && !SvMAGIC(gvhv->tmphv)) {
+ /* propagate SvMAGIC(hv) to SvMAGIC(gvhv->tmphv) */
+ /* XXX: maybe newHVhv should do this? */
+ hv_magic(gvhv->tmphv, Nullgv, mg->mg_type);
+ }
gvhv->orighv = hv;
GvHV(gvhv->gv) = gvhv->tmphv;