Back out change change 10214 (drop SVp_IOK from >> PRIVSHIFT) as it
Nicholas Clark [Tue, 14 Feb 2006 23:42:45 +0000 (23:42 +0000)]
never felt quite correct, and other parts of the SV conversion
implementation have improved such that the symptoms 10214 covered
over are gone even without it.

p4raw-id: //depot/perl@27184

mg.c
scope.c
sv.c

diff --git a/mg.c b/mg.c
index 339a6d4..20344ad 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -100,7 +100,7 @@ S_save_magic(pTHX_ I32 mgs_ix, SV *sv)
 
     SvMAGICAL_off(sv);
     SvREADONLY_off(sv);
-    SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+    SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
 }
 
 /*
diff --git a/scope.c b/scope.c
index 74a9936..5939877 100644 (file)
--- a/scope.c
+++ b/scope.c
@@ -169,7 +169,7 @@ S_save_scalar_at(pTHX_ SV **sptr)
        if (SvGMAGICAL(osv)) {
            const bool oldtainted = PL_tainted;
            SvFLAGS(osv) |= (SvFLAGS(osv) &
-              (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+              (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
            PL_tainted = oldtainted;
        }
        mg_localize(osv, sv);
diff --git a/sv.c b/sv.c
index 17b7b3d..d599a2f 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -4424,7 +4424,7 @@ Perl_sv_unmagic(pTHX_ SV *sv, int type)
     }
     if (!SvMAGIC(sv)) {
        SvMAGICAL_off(sv);
-       SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+       SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
        SvMAGIC_set(sv, NULL);
     }