Re: Auto-incrementing tied scalar causes SEGV
Graham Barr [Sat, 24 Oct 1998 12:45:21 +0000 (07:45 -0500)]
Message-ID: <19981024124521.C512@pobox.com>

p4raw-id: //depot/perl@2076

sv.c

diff --git a/sv.c b/sv.c
index f0ccae5..ab419e4 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -3596,6 +3596,8 @@ sv_inc(register SV *sv)
 
     if (!sv)
        return;
+    if (SvGMAGICAL(sv))
+       mg_get(sv);
     if (SvTHINKFIRST(sv)) {
        if (SvREADONLY(sv)) {
            dTHR;
@@ -3612,8 +3614,6 @@ sv_inc(register SV *sv)
            sv_setiv(sv, i);
        }
     }
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
     flags = SvFLAGS(sv);
     if (flags & SVp_NOK) {
        (void)SvNOK_only(sv);
@@ -3690,6 +3690,8 @@ sv_dec(register SV *sv)
 
     if (!sv)
        return;
+    if (SvGMAGICAL(sv))
+       mg_get(sv);
     if (SvTHINKFIRST(sv)) {
        if (SvREADONLY(sv)) {
            dTHR;
@@ -3706,8 +3708,6 @@ sv_dec(register SV *sv)
            sv_setiv(sv, i);
        }
     }
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
     flags = SvFLAGS(sv);
     if (flags & SVp_NOK) {
        SvNVX(sv) -= 1.0;