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.