summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChip Salzenberg <chip@perl.com>1997-03-25 03:51:51 +1200
committerChip Salzenberg <chip@atlantic.net>1997-04-07 00:00:00 +0000
commit973f89ab54aee31638a55cc8c998627da46e5534 (patch)
treeb1415e70ed7e7586fe4db57e53bd8ec4f598956a
parentfdaee7fccceeabfa3b6031d9b791db38058c1234 (diff)
downloadperl-973f89ab54aee31638a55cc8c998627da46e5534.tar.gz
Fix assignment from magic SV that becomes a glob
-rw-r--r--sv.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sv.c b/sv.c
index f8b1904802..33b72ffaf9 100644
--- a/sv.c
+++ b/sv.c
@@ -1925,10 +1925,16 @@ register SV *sstr;
/* FALL THROUGH */
default:
+ if (SvGMAGICAL(sstr)) {
+ mg_get(sstr);
+ if (SvTYPE(sstr) != stype) {
+ stype = SvTYPE(sstr);
+ if (stype == SVt_PVGV && dtype <= SVt_PVGV)
+ goto glob_assign;
+ }
+ }
if (dtype < stype)
sv_upgrade(dstr, stype);
- if (SvGMAGICAL(sstr))
- mg_get(sstr);
}
sflags = SvFLAGS(sstr);