Change 27392 by [EMAIL PROTECTED] on 2006/03/06 20:40:15

        Integrate:
        [ 25322]
        Subject: [PATCH blead] Use SvGETMAGIC more often
        From: Rick Delaney <[EMAIL PROTECTED]>
        Date: Mon, 22 Aug 2005 13:00:33 -0400
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 26185]
        Subject: [PATCH] concat interacts badly with magic
        From: Robin Houston <[EMAIL PROTECTED]>
        Date: Mon, 21 Nov 2005 17:03:39 +0000
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 26190]
        Revert change #26185, which could have some unwanted side-effects.
        (lib/warnings.t had failures due to this patch.)
        Moreover Dave Mitchell correctly pointed out that [perl #37722]
        wasn't really a bug.

Affected files ...

... //depot/maint-5.8/perl/doio.c#66 integrate
... //depot/maint-5.8/perl/pp.c#92 integrate
... //depot/maint-5.8/perl/pp_ctl.c#115 integrate
... //depot/maint-5.8/perl/pp_hot.c#94 integrate
... //depot/maint-5.8/perl/sv.c#239 integrate
... //depot/maint-5.8/perl/t/op/tie.t#15 integrate
... //depot/maint-5.8/perl/universal.c#44 integrate
... //depot/maint-5.8/perl/xsutils.c#20 integrate

Differences ...

==== //depot/maint-5.8/perl/doio.c#66 (text) ====
Index: perl/doio.c
--- perl/doio.c#65~27314~       2006-02-24 06:21:24.000000000 -0800
+++ perl/doio.c 2006-03-06 12:40:15.000000000 -0800
@@ -1242,8 +1242,7 @@
        return TRUE;
     case SVt_IV:
        if (SvIOK(sv)) {
-           if (SvGMAGICAL(sv))
-               mg_get(sv);
+           SvGETMAGIC(sv);
            if (SvIsUV(sv))
                PerlIO_printf(fp, "%"UVuf, (UV)SvUVX(sv));
            else

==== //depot/maint-5.8/perl/pp.c#92 (text) ====
Index: perl/pp.c
--- perl/pp.c#91~27391~ 2006-03-06 10:13:50.000000000 -0800
+++ perl/pp.c   2006-03-06 12:40:15.000000000 -0800
@@ -502,8 +502,8 @@
     const char *pv;
     SV * const sv = POPs;
 
-    if (sv && SvGMAGICAL(sv))
-       mg_get(sv);
+    if (sv)
+       SvGETMAGIC(sv);
 
     if (!sv || !SvROK(sv))
        RETPUSHNO;
@@ -750,8 +750,7 @@
            RETPUSHYES;
        break;
     default:
-       if (SvGMAGICAL(sv))
-           mg_get(sv);
+       SvGETMAGIC(sv);
        if (SvOK(sv))
            RETPUSHYES;
     }
@@ -1380,8 +1379,7 @@
   {
     register IV count;
     dPOPss;
-    if (SvGMAGICAL(sv))
-        mg_get(sv);
+    SvGETMAGIC(sv);
     if (SvIOKp(sv)) {
         if (SvUOK(sv)) {
              const UV uv = SvUV(sv);
@@ -2205,8 +2203,8 @@
     dSP; dATARGET; tryAMAGICbin(band,opASSIGN);
     {
       dPOPTOPssrl;
-      if (SvGMAGICAL(left)) mg_get(left);
-      if (SvGMAGICAL(right)) mg_get(right);
+      SvGETMAGIC(left);
+      SvGETMAGIC(right);
       if (SvNIOKp(left) || SvNIOKp(right)) {
        if (PL_op->op_private & HINT_INTEGER) {
          const IV i = SvIV_nomg(left) & SvIV_nomg(right);
@@ -2230,8 +2228,8 @@
     dSP; dATARGET; tryAMAGICbin(bxor,opASSIGN);
     {
       dPOPTOPssrl;
-      if (SvGMAGICAL(left)) mg_get(left);
-      if (SvGMAGICAL(right)) mg_get(right);
+      SvGETMAGIC(left);
+      SvGETMAGIC(right);
       if (SvNIOKp(left) || SvNIOKp(right)) {
        if (PL_op->op_private & HINT_INTEGER) {
          const IV i = (USE_LEFT(left) ? SvIV_nomg(left) : 0) ^ 
SvIV_nomg(right);
@@ -2255,8 +2253,8 @@
     dSP; dATARGET; tryAMAGICbin(bor,opASSIGN);
     {
       dPOPTOPssrl;
-      if (SvGMAGICAL(left)) mg_get(left);
-      if (SvGMAGICAL(right)) mg_get(right);
+      SvGETMAGIC(left);
+      SvGETMAGIC(right);
       if (SvNIOKp(left) || SvNIOKp(right)) {
        if (PL_op->op_private & HINT_INTEGER) {
          const IV i = (USE_LEFT(left) ? SvIV_nomg(left) : 0) | 
SvIV_nomg(right);
@@ -2281,8 +2279,7 @@
     {
        dTOPss;
        const int flags = SvFLAGS(sv);
-       if (SvGMAGICAL(sv))
-           mg_get(sv);
+       SvGETMAGIC(sv);
        if ((flags & SVf_IOK) || ((flags & (SVp_IOK | SVp_NOK)) == SVp_IOK)) {
            /* It's publicly an integer, or privately an integer-not-float */
        oops_its_an_int:
@@ -2358,8 +2355,7 @@
     dSP; dTARGET; tryAMAGICun(compl);
     {
       dTOPss;
-      if (SvGMAGICAL(sv))
-         mg_get(sv);
+      SvGETMAGIC(sv);
       if (SvNIOKp(sv)) {
        if (PL_op->op_private & HINT_INTEGER) {
          const IV i = ~SvIV_nomg(sv);

==== //depot/maint-5.8/perl/pp_ctl.c#115 (text) ====
Index: perl/pp_ctl.c
--- perl/pp_ctl.c#114~27317~    2006-02-24 08:36:54.000000000 -0800
+++ perl/pp_ctl.c       2006-03-06 12:40:15.000000000 -0800
@@ -1048,10 +1048,8 @@
     if (GIMME == G_ARRAY) {
        dPOPPOPssrl;
 
-       if (SvGMAGICAL(left))
-           mg_get(left);
-       if (SvGMAGICAL(right))
-           mg_get(right);
+       SvGETMAGIC(left);
+       SvGETMAGIC(right);
 
        if (RANGE_IS_NUMERIC(left,right)) {
            register IV i, j;

==== //depot/maint-5.8/perl/pp_hot.c#94 (text) ====
Index: perl/pp_hot.c
--- perl/pp_hot.c#93~27316~     2006-02-24 07:19:21.000000000 -0800
+++ perl/pp_hot.c       2006-03-06 12:40:15.000000000 -0800
@@ -174,8 +174,7 @@
     }
     else { /* TARG == left */
         STRLEN llen;
-       if (SvGMAGICAL(left))
-           mg_get(left);               /* or mg_get(left) may happen here */
+       SvGETMAGIC(left);               /* or mg_get(left) may happen here */
        if (!SvOK(TARG))
            sv_setpvn(left, "", 0);
        (void)SvPV_nomg_const(left, llen);    /* Needed to set UTF8 flag */
@@ -3062,8 +3061,7 @@
 void
 Perl_vivify_ref(pTHX_ SV *sv, U32 to_what)
 {
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
     if (!SvOK(sv)) {
        if (SvREADONLY(sv))
            Perl_croak(aTHX_ PL_no_modify);
@@ -3133,8 +3131,7 @@
     if (!sv)
        Perl_croak(aTHX_ "Can't call method \"%s\" on an undefined value", 
name);
 
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
     if (SvROK(sv))
        ob = (SV*)SvRV(sv);
     else {

==== //depot/maint-5.8/perl/sv.c#239 (text) ====
Index: perl/sv.c
--- perl/sv.c#238~27391~        2006-03-06 10:13:50.000000000 -0800
+++ perl/sv.c   2006-03-06 12:40:15.000000000 -0800
@@ -2935,8 +2935,7 @@
 bool
 Perl_sv_2bool(pTHX_ register SV *sv)
 {
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
 
     if (!SvOK(sv))
        return 0;
@@ -5944,8 +5943,7 @@
 
     if (!sv)
        return;
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
     if (SvTHINKFIRST(sv)) {
        if (SvREADONLY(sv) && SvFAKE(sv))
            sv_force_normal(sv);
@@ -6100,8 +6098,7 @@
 
     if (!sv)
        return;
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
     if (SvTHINKFIRST(sv)) {
        if (SvREADONLY(sv) && SvFAKE(sv))
            sv_force_normal(sv);
@@ -6746,8 +6743,7 @@
        goto fix_gv;
 
     default:
-       if (SvGMAGICAL(sv))
-           mg_get(sv);
+       SvGETMAGIC(sv);
        if (SvROK(sv)) {
            SV * const *sp = &sv;       /* Used in tryAMAGICunDEREF macro. */
            tryAMAGICunDEREF(to_cv);
@@ -6996,8 +6992,7 @@
 {
     if (!sv)
        return 0;
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
     if (!SvROK(sv))
        return 0;
     sv = (SV*)SvRV(sv);
@@ -7022,8 +7017,7 @@
     const char *hvname;
     if (!sv)
        return 0;
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
     if (!SvROK(sv))
        return 0;
     sv = (SV*)SvRV(sv);

==== //depot/maint-5.8/perl/universal.c#44 (text) ====
Index: perl/universal.c
--- perl/universal.c#43~26738~  2006-01-08 13:30:11.000000000 -0800
+++ perl/universal.c    2006-03-06 12:40:15.000000000 -0800
@@ -144,8 +144,7 @@
     HV *stash = Nullhv;
     HV *name_stash;
 
-    if (SvGMAGICAL(sv))
-        mg_get(sv) ;
+    SvGETMAGIC(sv);
 
     if (SvROK(sv)) {
         sv = SvRV(sv);
@@ -228,8 +227,7 @@
 
     sv = ST(0);
 
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
 
     if (!SvOK(sv) || !(SvROK(sv) || (SvPOK(sv) && SvCUR(sv))
                || (SvGMAGICAL(sv) && SvPOKp(sv) && SvCUR(sv))))
@@ -254,8 +252,7 @@
 
     sv = ST(0);
 
-    if (SvGMAGICAL(sv))
-       mg_get(sv);
+    SvGETMAGIC(sv);
 
     if (!SvOK(sv) || !(SvROK(sv) || (SvPOK(sv) && SvCUR(sv))
                || (SvGMAGICAL(sv) && SvPOKp(sv) && SvCUR(sv))))

==== //depot/maint-5.8/perl/xsutils.c#20 (text) ====
Index: perl/xsutils.c
--- perl/xsutils.c#19~26738~    2006-01-08 13:30:11.000000000 -0800
+++ perl/xsutils.c      2006-03-06 12:40:15.000000000 -0800
@@ -304,8 +304,7 @@
 
     rv = ST(0);
     ST(0) = TARG;
-    if (SvGMAGICAL(rv))
-       mg_get(rv);
+    SvGETMAGIC(rv);
     if (!(SvOK(rv) && SvROK(rv)))
        goto usage;
     sv = SvRV(rv);
End of Patch.

Reply via email to