Change 25391 by [EMAIL PROTECTED] on 2005/09/12 19:50:36
Integrate:
[ 24248]
Subject: [PATCH] Refactoring to Sv*_set() macros - patch #5
From: Steve Peters <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
Date: Mon, 18 Apr 2005 19:09:25 -0500
[ 24249]
Simplify PERL_DEBUG_PAD_ZERO so it continues to expand to
valid C code
[ 24253]
Restore SvEND_set
Affected files ...
... //depot/maint-5.8/perl/dump.c#34 integrate
... //depot/maint-5.8/perl/ext/ByteLoader/ByteLoader.pm#4 integrate
... //depot/maint-5.8/perl/ext/Data/Dumper/Dumper.pm#12 integrate
... //depot/maint-5.8/perl/ext/Data/Dumper/Dumper.xs#9 integrate
... //depot/maint-5.8/perl/ext/Devel/Peek/Peek.pm#4 integrate
... //depot/maint-5.8/perl/ext/Devel/Peek/Peek.xs#2 integrate
... //depot/maint-5.8/perl/ext/List/Util/lib/List/Util.pm#9 integrate
... //depot/maint-5.8/perl/ext/POSIX/POSIX.pm#10 integrate
... //depot/maint-5.8/perl/ext/POSIX/POSIX.xs#20 integrate
... //depot/maint-5.8/perl/ext/PerlIO/encoding/encoding.pm#5 integrate
... //depot/maint-5.8/perl/ext/PerlIO/encoding/encoding.xs#5 integrate
... //depot/maint-5.8/perl/ext/PerlIO/scalar/scalar.pm#4 integrate
... //depot/maint-5.8/perl/ext/PerlIO/scalar/scalar.xs#10 integrate
... //depot/maint-5.8/perl/ext/Storable/Storable.pm#11 integrate
... //depot/maint-5.8/perl/ext/Storable/Storable.xs#26 integrate
... //depot/maint-5.8/perl/ext/threads/shared/shared.xs#20 integrate
... //depot/maint-5.8/perl/ext/threads/threads.pm#11 integrate
... //depot/maint-5.8/perl/gv.c#29 integrate
... //depot/maint-5.8/perl/mg.c#56 integrate
... //depot/maint-5.8/perl/op.c#79 integrate
... //depot/maint-5.8/perl/pad.c#27 integrate
... //depot/maint-5.8/perl/pad.h#8 integrate
... //depot/maint-5.8/perl/perl.h#74 integrate
... //depot/maint-5.8/perl/pp.c#55 integrate
... //depot/maint-5.8/perl/pp.h#12 integrate
... //depot/maint-5.8/perl/pp_hot.c#59 integrate
... //depot/maint-5.8/perl/regcomp.c#37 integrate
... //depot/maint-5.8/perl/scope.c#25 integrate
... //depot/maint-5.8/perl/sv.c#135 integrate
... //depot/maint-5.8/perl/sv.h#36 edit
... //depot/maint-5.8/perl/toke.c#63 integrate
Differences ...
==== //depot/maint-5.8/perl/dump.c#34 (text) ====
Index: perl/dump.c
--- perl/dump.c#33~25385~ Sun Sep 11 13:36:26 2005
+++ perl/dump.c Mon Sep 12 12:50:36 2005
@@ -227,7 +227,7 @@
if (SvROK(sv)) {
sv_catpv(t, "\\");
if (SvCUR(t) + unref > 10) {
- SvCUR(t) = unref + 3;
+ SvCUR_set(t, unref + 3);
*SvEND(t) = '\0';
sv_catpv(t, "...");
goto finish;
@@ -1084,8 +1084,10 @@
if ((type != SVt_PVHV) && SvUTF8(sv))
sv_catpv(d, "UTF8");
- if (*(SvEND(d) - 1) == ',')
- SvPVX(d)[--SvCUR(d)] = '\0';
+ if (*(SvEND(d) - 1) == ',') {
+ SvCUR_set(d, SvCUR(d) - 1);
+ SvPVX(d)[SvCUR(d)] = '\0';
+ }
sv_catpv(d, ")");
s = SvPVX(d);
==== //depot/maint-5.8/perl/ext/ByteLoader/ByteLoader.pm#4 (text) ====
Index: perl/ext/ByteLoader/ByteLoader.pm
--- perl/ext/ByteLoader/ByteLoader.pm#3~20427~ Fri Aug 1 05:46:35 2003
+++ perl/ext/ByteLoader/ByteLoader.pm Mon Sep 12 12:50:36 2005
@@ -2,7 +2,7 @@
use XSLoader ();
-our $VERSION = '0.05';
+our $VERSION = '0.06';
XSLoader::load 'ByteLoader', $VERSION;
@@ -15,7 +15,7 @@
=head1 SYNOPSIS
- use ByteLoader 0.04;
+ use ByteLoader 0.06;
<byte code>
or just
==== //depot/maint-5.8/perl/ext/Data/Dumper/Dumper.pm#12 (text) ====
Index: perl/ext/Data/Dumper/Dumper.pm
--- perl/ext/Data/Dumper/Dumper.pm#11~24296~ Fri Apr 22 08:13:08 2005
+++ perl/ext/Data/Dumper/Dumper.pm Mon Sep 12 12:50:36 2005
@@ -9,7 +9,7 @@
package Data::Dumper;
-$VERSION = '2.121_04';
+$VERSION = '2.121_05';
#$| = 1;
==== //depot/maint-5.8/perl/ext/Data/Dumper/Dumper.xs#9 (text) ====
Index: perl/ext/Data/Dumper/Dumper.xs
--- perl/ext/Data/Dumper/Dumper.xs#8~24295~ Fri Apr 22 07:59:04 2005
+++ perl/ext/Data/Dumper/Dumper.xs Mon Sep 12 12:50:36 2005
@@ -215,7 +215,7 @@
SvGROW(sv, len*n + SvCUR(sv) + 1);
if (len == 1) {
char *start = SvPVX(sv) + SvCUR(sv);
- SvCUR(sv) += n;
+ SvCUR_set(sv, SvCUR(sv) + n);
start[n] = '\0';
while (n > 0)
start[--n] = str[0];
@@ -855,7 +855,7 @@
av_push(postav, postentry);
e = newRV_inc(e);
- SvCUR(newapad) = 0;
+ SvCUR_set(newapad, 0);
if (indent >= 2)
(void)sv_x(aTHX_ newapad, " ", 1, SvCUR(postentry));
==== //depot/maint-5.8/perl/ext/Devel/Peek/Peek.pm#4 (text) ====
Index: perl/ext/Devel/Peek/Peek.pm
--- perl/ext/Devel/Peek/Peek.pm#3~23454~ Mon Nov 1 04:38:48 2004
+++ perl/ext/Devel/Peek/Peek.pm Mon Sep 12 12:50:36 2005
@@ -3,7 +3,7 @@
package Devel::Peek;
-$VERSION = '1.02';
+$VERSION = '1.03';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
==== //depot/maint-5.8/perl/ext/Devel/Peek/Peek.xs#2 (text) ====
Index: perl/ext/Devel/Peek/Peek.xs
--- perl/ext/Devel/Peek/Peek.xs#1~17645~ Fri Jul 19 12:29:57 2002
+++ perl/ext/Devel/Peek/Peek.xs Mon Sep 12 12:50:36 2005
@@ -240,7 +240,7 @@
if (!SvOK(*svp)) {
av = newAV();
(void)SvUPGRADE(*svp, SVt_RV);
- SvRV(*svp) = (SV*)av;
+ SvRV_set(*svp, (SV*)av);
SvROK_on(*svp);
} else
av = (AV*)SvRV(*svp);
==== //depot/maint-5.8/perl/ext/List/Util/lib/List/Util.pm#9 (text) ====
Index: perl/ext/List/Util/lib/List/Util.pm
--- perl/ext/List/Util/lib/List/Util.pm#8~22862~ Sun May 30 03:09:57 2004
+++ perl/ext/List/Util/lib/List/Util.pm Mon Sep 12 12:50:36 2005
@@ -10,7 +10,7 @@
@ISA = qw(Exporter);
@EXPORT_OK = qw(first min max minstr maxstr reduce sum shuffle);
-$VERSION = "1.14";
+$VERSION = "1.14_01";
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
==== //depot/maint-5.8/perl/ext/POSIX/POSIX.pm#10 (text) ====
Index: perl/ext/POSIX/POSIX.pm
--- perl/ext/POSIX/POSIX.pm#9~22558~ Mon Mar 22 13:01:52 2004
+++ perl/ext/POSIX/POSIX.pm Mon Sep 12 12:50:36 2005
@@ -2,7 +2,7 @@
our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = ();
-our $VERSION = "1.08";
+our $VERSION = "1.09";
use AutoLoader;
==== //depot/maint-5.8/perl/ext/POSIX/POSIX.xs#20 (text) ====
Index: perl/ext/POSIX/POSIX.xs
--- perl/ext/POSIX/POSIX.xs#19~23272~ Sun Sep 5 14:47:13 2004
+++ perl/ext/POSIX/POSIX.xs Mon Sep 12 12:50:36 2005
@@ -1476,7 +1476,7 @@
char * buffer = sv_grow( sv_buffer, nbytes+1 );
CLEANUP:
if (RETVAL >= 0) {
- SvCUR(sv_buffer) = RETVAL;
+ SvCUR_set(sv_buffer, RETVAL);
SvPOK_only(sv_buffer);
*SvEND(sv_buffer) = '\0';
SvTAINTED_on(sv_buffer);
@@ -1652,7 +1652,7 @@
strxfrm(SvPVX(ST(0)), p, (size_t)dstlen);
dstlen--;
}
- SvCUR(ST(0)) = dstlen;
+ SvCUR_set(ST(0), dstlen);
SvPOK_only(ST(0));
}
==== //depot/maint-5.8/perl/ext/PerlIO/encoding/encoding.pm#5 (text) ====
Index: perl/ext/PerlIO/encoding/encoding.pm
--- perl/ext/PerlIO/encoding/encoding.pm#4~25370~ Sat Sep 10 06:47:01 2005
+++ perl/ext/PerlIO/encoding/encoding.pm Mon Sep 12 12:50:36 2005
@@ -1,7 +1,7 @@
package PerlIO::encoding;
use strict;
-our $VERSION = '0.07';
+our $VERSION = '0.08';
our $DEBUG = 0;
$DEBUG and warn __PACKAGE__, " called by ", join(", ", caller), "\n";
==== //depot/maint-5.8/perl/ext/PerlIO/encoding/encoding.xs#5 (text) ====
Index: perl/ext/PerlIO/encoding/encoding.xs
--- perl/ext/PerlIO/encoding/encoding.xs#4~25390~ Mon Sep 12 09:18:42 2005
+++ perl/ext/PerlIO/encoding/encoding.xs Mon Sep 12 12:50:36 2005
@@ -322,7 +322,7 @@
}
}
SvPV_set(e->dataSV, (char *) ptr);
- SvLEN(e->dataSV) = 0; /* Hands off sv.c - it isn't yours */
+ SvLEN_set(e->dataSV, 0); /* Hands off sv.c - it isn't yours */
SvCUR_set(e->dataSV,use);
SvPOK_only(e->dataSV);
}
@@ -463,7 +463,7 @@
str = sv_newmortal();
sv_upgrade(str, SVt_PV);
SvPV_set(str, (char*)e->base.ptr);
- SvLEN(str) = 0;
+ SvLEN_set(str, 0);
SvCUR_set(str, e->base.end - e->base.ptr);
SvPOK_only(str);
SvUTF8_on(str);
==== //depot/maint-5.8/perl/ext/PerlIO/scalar/scalar.pm#4 (text) ====
Index: perl/ext/PerlIO/scalar/scalar.pm
--- perl/ext/PerlIO/scalar/scalar.pm#3~21075~ Mon Sep 8 01:15:50 2003
+++ perl/ext/PerlIO/scalar/scalar.pm Mon Sep 12 12:50:36 2005
@@ -1,5 +1,5 @@
package PerlIO::scalar;
-our $VERSION = '0.02';
+our $VERSION = '0.03';
use XSLoader ();
XSLoader::load 'PerlIO::scalar';
1;
==== //depot/maint-5.8/perl/ext/PerlIO/scalar/scalar.xs#10 (text) ====
Index: perl/ext/PerlIO/scalar/scalar.xs
--- perl/ext/PerlIO/scalar/scalar.xs#9~23388~ Tue Oct 19 11:26:52 2004
+++ perl/ext/PerlIO/scalar/scalar.xs Mon Sep 12 12:50:36 2005
@@ -40,7 +40,7 @@
SvUPGRADE(s->var, SVt_PV);
code = PerlIOBase_pushed(aTHX_ f, mode, Nullsv, tab);
if (!SvOK(s->var) || (PerlIOBase(f)->flags) & PERLIO_F_TRUNCATE)
- SvCUR(s->var) = 0;
+ SvCUR_set(s->var, 0);
if ((PerlIOBase(f)->flags) & PERLIO_F_APPEND)
s->posn = SvCUR(s->var);
else
==== //depot/maint-5.8/perl/ext/Storable/Storable.xs#26 (text) ====
Index: perl/ext/Storable/Storable.xs
--- perl/ext/Storable/Storable.xs#25~25390~ Mon Sep 12 09:18:42 2005
+++ perl/ext/Storable/Storable.xs Mon Sep 12 12:50:36 2005
@@ -976,7 +976,7 @@
stash = gv_stashpv((p), TRUE); \
ref = newRV_noinc(s); \
(void) sv_bless(ref, stash); \
- SvRV(ref) = 0; \
+ SvRV_set(ref, NULL); \
SvREFCNT_dec(ref); \
} STMT_END
/*
@@ -2839,7 +2839,7 @@
ref = newRV_noinc(sv); /* Temporary reference
*/
av = array_call(aTHX_ ref, hook, clone); /* @a =
$object->STORABLE_freeze($c) */
- SvRV(ref) = 0;
+ SvRV_set(ref, NULL);
SvREFCNT_dec(ref); /* Reclaim
temporary reference */
count = AvFILLp(av) + 1;
@@ -4293,7 +4293,7 @@
sv_upgrade(rv, SVt_RV);
}
- SvRV(rv) = sv; /* $rv = \$sv */
+ SvRV_set(rv, sv); /* $rv = \$sv */
SvROK_on(rv);
TRACEME(("ok (retrieve_ref at 0x%"UVxf")", PTR2UV(rv)));
@@ -4330,7 +4330,7 @@
*/
sv_upgrade(rv, SVt_RV);
- SvRV(rv) = sv; /* $rv = \$sv */
+ SvRV_set(rv, sv); /* $rv = \$sv */
SvROK_on(rv);
/*
@@ -5830,8 +5830,8 @@
SvUPGRADE(in, SVt_PV);
SvPOK_on(in);
SvPV_set(in, asbytes);
- SvLEN(in) = klen_tmp;
- SvCUR(in) = klen_tmp - 1;
+ SvLEN_set(in, klen_tmp);
+ SvCUR_set(in, klen_tmp - 1);
}
}
#endif
==== //depot/maint-5.8/perl/ext/threads/shared/shared.xs#20 (text) ====
Index: perl/ext/threads/shared/shared.xs
--- perl/ext/threads/shared/shared.xs#19~24195~ Thu Apr 7 09:05:43 2005
+++ perl/ext/threads/shared/shared.xs Mon Sep 12 12:50:36 2005
@@ -361,7 +361,7 @@
char* stash_ptr = SvPV((SV*) SvSTASH(ssv), len);
HV* stash = gv_stashpvn(stash_ptr, len, TRUE);
SvOBJECT_on(sv);
- SvSTASH(sv) = (HV*)SvREFCNT_inc(stash);
+ SvSTASH_set(sv, (HV*)SvREFCNT_inc(stash));
}
}
break;
@@ -503,7 +503,7 @@
SV *obj = Nullsv;
Perl_sharedsv_associate(aTHX_ &obj, SvRV(SHAREDSvPTR(shared)),
NULL);
sv_setsv_nomg(sv, &PL_sv_undef);
- SvRV(sv) = obj;
+ SvRV_set(sv, obj);
SvROK_on(sv);
}
@@ -531,7 +531,7 @@
if(SvOBJECT(SvRV(sv))) {
SV* fake_stash = newSVpv(HvNAME(SvSTASH(SvRV(sv))),0);
SvOBJECT_on(SHAREDSvPTR(target));
- SvSTASH(SHAREDSvPTR(target)) = (HV*)fake_stash;
+ SvSTASH_set(SHAREDSvPTR(target), (HV*)fake_stash);
}
CALLER_CONTEXT;
}
@@ -546,7 +546,7 @@
if(SvOBJECT(sv)) {
SV* fake_stash = newSVpv(HvNAME(SvSTASH(sv)),0);
SvOBJECT_on(SHAREDSvPTR(shared));
- SvSTASH(SHAREDSvPTR(shared)) = (HV*)fake_stash;
+ SvSTASH_set(SHAREDSvPTR(shared), (HV*)fake_stash);
}
CALLER_CONTEXT;
}
@@ -643,7 +643,7 @@
SV *obj = Nullsv;
Perl_sharedsv_associate(aTHX_ &obj, SvRV(*svp), NULL);
sv_setsv_nomg(sv, &PL_sv_undef);
- SvRV(sv) = obj;
+ SvRV_set(sv, obj);
SvROK_on(sv);
SvSETMAGIC(sv);
}
==== //depot/maint-5.8/perl/ext/threads/threads.pm#11 (xtext) ====
Index: perl/ext/threads/threads.pm
--- perl/ext/threads/threads.pm#10~23133~ Sat Jul 17 02:36:41 2004
+++ perl/ext/threads/threads.pm Mon Sep 12 12:50:36 2005
@@ -50,7 +50,7 @@
our @EXPORT = qw(
async
);
-our $VERSION = '1.05';
+our $VERSION = '1.06';
# || 0 to ensure compatibility with previous versions
==== //depot/maint-5.8/perl/gv.c#29 (text) ====
Index: perl/gv.c
--- perl/gv.c#28~25390~ Mon Sep 12 09:18:42 2005
+++ perl/gv.c Mon Sep 12 12:50:36 2005
@@ -113,7 +113,7 @@
if (SvLEN(gv)) {
if (proto) {
SvPV_set(gv, NULL);
- SvLEN(gv) = 0;
+ SvLEN_set(gv, 0);
SvPOK_off(gv);
} else
Safefree(SvPVX(gv));
@@ -532,7 +532,7 @@
*/
CvSTASH(cv) = stash;
SvPV_set(cv, (char *)name); /* cast to lose constness warning */
- SvCUR(cv) = len;
+ SvCUR_set(cv, len);
return gv;
}
#endif
@@ -1189,7 +1189,7 @@
/* unless exists($main::{FileHandle}) and defined(%main::FileHandle::) */
if (!(iogv && GvHV(iogv) && HvARRAY(GvHV(iogv))))
iogv = gv_fetchpv("IO::Handle::", TRUE, SVt_PVHV);
- SvSTASH(io) = (HV*)SvREFCNT_inc(GvHV(iogv));
+ SvSTASH_set(io, (HV*)SvREFCNT_inc(GvHV(iogv)));
return io;
}
@@ -1569,7 +1569,7 @@
*/
SV* newref = newSVsv(tmpRef);
SvOBJECT_on(newref);
- SvSTASH(newref) = (HV*)SvREFCNT_inc(SvSTASH(tmpRef));
+ SvSTASH_set(newref, (HV*)SvREFCNT_inc(SvSTASH(tmpRef)));
return newref;
}
}
==== //depot/maint-5.8/perl/mg.c#56 (text) ====
Index: perl/mg.c
--- perl/mg.c#55~25385~ Sun Sep 11 13:36:26 2005
+++ perl/mg.c Mon Sep 12 12:50:36 2005
@@ -420,7 +420,7 @@
SvREFCNT_dec(mg->mg_obj);
Safefree(mg);
}
- SvMAGIC(sv) = 0;
+ SvMAGIC_set(sv, NULL);
return 0;
}
@@ -778,11 +778,11 @@
MAGIC* mg = SvMAGIC(sv);
MAGIC* mgt;
PL_tainted = 1;
- SvMAGIC(sv) = mg->mg_moremagic;
+ SvMAGIC_set(sv, mg->mg_moremagic);
SvTAINT(sv);
if ((mgt = SvMAGIC(sv))) {
mg->mg_moremagic = mgt;
- SvMAGIC(sv) = mg;
+ SvMAGIC_set(sv, mg);
}
} else
SvTAINTED_off(sv);
@@ -1985,7 +1985,7 @@
if (!SvWEAKREF(svp[i]))
Perl_croak(aTHX_ "panic: magic_killbackrefs");
/* XXX Should we check that it hasn't changed? */
- SvRV(svp[i]) = 0;
+ SvRV_set(svp[i], 0);
SvOK_off(svp[i]);
SvWEAKREF_off(svp[i]);
svp[i] = Nullsv;
==== //depot/maint-5.8/perl/op.c#79 (text) ====
Index: perl/op.c
--- perl/op.c#78~25390~ Mon Sep 12 09:18:42 2005
+++ perl/op.c Mon Sep 12 12:50:36 2005
@@ -3324,7 +3324,7 @@
GV *gv = cGVOPx_gv(curop);
if (gv == PL_defgv || (int)SvCUR(gv) == PL_generation)
break;
- SvCUR(gv) = PL_generation;
+ SvCUR_set(gv, PL_generation);
}
else if (curop->op_type == OP_PADSV ||
curop->op_type == OP_PADAV ||
@@ -3334,8 +3334,7 @@
if ((int)PAD_COMPNAME_GEN(curop->op_targ)
== PL_generation)
break;
- PAD_COMPNAME_GEN(curop->op_targ)
- = PL_generation;
+ PAD_COMPNAME_GEN_set(curop->op_targ, PL_generation);
}
else if (curop->op_type == OP_RV2CV)
@@ -3357,7 +3356,7 @@
#endif
if (gv == PL_defgv || (int)SvCUR(gv) ==
PL_generation)
break;
- SvCUR(gv) = PL_generation;
+ SvCUR_set(gv, PL_generation);
}
}
else
@@ -5879,7 +5878,7 @@
if (*s == ':' && s[1] == ':') {
*s = '/';
Move(s+2, s+1, strlen(s+2)+1, char);
- --SvCUR(kid->op_sv);
+ SvCUR_set(kid->op_sv, SvCUR(kid->op_sv) - 1);
}
}
if (SvREADONLY(kid->op_sv)) {
==== //depot/maint-5.8/perl/pad.c#27 (text) ====
Index: perl/pad.c
--- perl/pad.c#26~25390~ Mon Sep 12 09:18:42 2005
+++ perl/pad.c Mon Sep 12 12:50:36 2005
@@ -347,7 +347,7 @@
if (typestash) {
SvFLAGS(namesv) |= SVpad_TYPED;
- SvSTASH(namesv) = (HV*)SvREFCNT_inc((SV*) typestash);
+ SvSTASH_set(namesv, (HV*)SvREFCNT_inc((SV*) typestash));
}
if (ourstash) {
SvFLAGS(namesv) |= SVpad_OUR;
==== //depot/maint-5.8/perl/pad.h#8 (text) ====
Index: perl/pad.h
--- perl/pad.h#7~21492~ Sun Oct 19 10:17:40 2003
+++ perl/pad.h Mon Sep 12 12:50:36 2005
@@ -205,7 +205,12 @@
The generation number of the name at offset C<po> in the current
compiling pad (lvalue). Note that C<SvCUR> is hijacked for this purpose.
+=for apidoc m|STRLEN|PAD_COMPNAME_GEN_set|PADOFFSET po|int gen
+Sets the generation number of the name at offset C<po> in the current
+ling pad (lvalue) to C<gen>. Note that C<SvCUR_set> is hijacked for this
purpose.
+
=cut
+
*/
#define PAD_COMPNAME_FLAGS(po) SvFLAGS(*av_fetch(PL_comppad_name, (po), FALSE))
@@ -221,7 +226,7 @@
#define PAD_COMPNAME_GEN(po) SvCUR(AvARRAY(PL_comppad_name)[po])
-
+#define PAD_COMPNAME_GEN_set(po, gen) SvCUR_set(AvARRAY(PL_comppad_name)[po],
gen)
/*
==== //depot/maint-5.8/perl/perl.h#74 (text) ====
Index: perl/perl.h
--- perl/perl.h#73~24415~ Sat May 7 22:45:28 2005
+++ perl/perl.h Mon Sep 12 12:50:36 2005
@@ -3669,7 +3669,9 @@
};
#define PERL_DEBUG_PAD(i) &(PL_debug_pad.pad[i])
-#define PERL_DEBUG_PAD_ZERO(i) (SvPVX(PERL_DEBUG_PAD(i))[0] = 0,
SvCUR(PERL_DEBUG_PAD(i)) = 0, PERL_DEBUG_PAD(i))
+#define PERL_DEBUG_PAD_ZERO(i) (SvPVX(PERL_DEBUG_PAD(i))[0] = 0, \
+ (((XPV*) SvANY(PERL_DEBUG_PAD(i)))->xpv_cur = 0), \
+ PERL_DEBUG_PAD(i))
/* Enable variables which are pointers to functions */
typedef void (CPERLscope(*peep_t))(pTHX_ OP* o);
==== //depot/maint-5.8/perl/pp.c#55 (text) ====
Index: perl/pp.c
--- perl/pp.c#54~25390~ Mon Sep 12 09:18:42 2005
+++ perl/pp.c Mon Sep 12 12:50:36 2005
@@ -181,9 +181,10 @@
SvOOK_off(sv); /* backoff */
if (SvLEN(sv))
Safefree(SvPVX(sv));
- SvLEN(sv)=SvCUR(sv)=0;
+ SvLEN_set(sv, 0);
+ SvCUR_set(sv, 0);
}
- SvRV(sv) = (SV*)gv;
+ SvRV_set(sv, (SV*)gv);
SvROK_on(sv);
SvSETMAGIC(sv);
goto wasref;
@@ -500,7 +501,7 @@
}
rv = sv_newmortal();
sv_upgrade(rv, SVt_RV);
- SvRV(rv) = sv;
+ SvRV_set(rv, sv);
SvROK_on(rv);
return rv;
}
@@ -1500,7 +1501,7 @@
MEM_WRAP_CHECK_1(max, char, oom_string_extend);
SvGROW(TARG, max + 1);
repeatcpy(SvPVX(TARG) + len, SvPVX(TARG), len, count - 1);
- SvCUR(TARG) *= count;
+ SvCUR_set(TARG, SvCUR(TARG) * count);
}
*SvEND(TARG) = '\0';
}
==== //depot/maint-5.8/perl/pp.h#12 (text) ====
Index: perl/pp.h
--- perl/pp.h#11~24156~ Tue Apr 5 04:07:15 2005
+++ perl/pp.h Mon Sep 12 12:50:36 2005
@@ -484,7 +484,7 @@
changed SV* ref to SV* tmpRef */
#define RvDEEPCP(rv) STMT_START { SV* tmpRef=SvRV(rv); \
if (SvREFCNT(tmpRef)>1) { \
- SvRV(rv)=AMG_CALLun(rv,copy); \
+ SvRV_set(rv, AMG_CALLun(rv,copy)); \
SvREFCNT_dec(tmpRef); \
} } STMT_END
==== //depot/maint-5.8/perl/pp_hot.c#59 (text) ====
Index: perl/pp_hot.c
--- perl/pp_hot.c#58~25390~ Mon Sep 12 09:18:42 2005
+++ perl/pp_hot.c Mon Sep 12 12:50:36 2005
@@ -1641,7 +1641,7 @@
tmps = SvEND(sv) - 1;
if (*tmps == *SvPVX(PL_rs)) {
*tmps = '\0';
- SvCUR(sv)--;
+ SvCUR_set(sv, SvCUR(sv) - 1);
}
}
for (tmps = SvPVX(sv); *tmps; tmps++)
@@ -3078,17 +3078,18 @@
else if (SvTYPE(sv) >= SVt_PV) {
SvOOK_off(sv);
Safefree(SvPVX(sv));
- SvLEN(sv) = SvCUR(sv) = 0;
+ SvLEN_set(sv, 0);
+ SvCUR_set(sv, 0);
}
switch (to_what) {
case OPpDEREF_SV:
- SvRV(sv) = NEWSV(355,0);
+ SvRV_set(sv, NEWSV(355,0));
break;
case OPpDEREF_AV:
- SvRV(sv) = (SV*)newAV();
+ SvRV_set(sv, (SV*)newAV());
break;
case OPpDEREF_HV:
- SvRV(sv) = (SV*)newHV();
+ SvRV_set(sv, (SV*)newHV());
break;
}
SvROK_on(sv);
==== //depot/maint-5.8/perl/regcomp.c#37 (text) ====
Index: perl/regcomp.c
--- perl/regcomp.c#36~23932~ Sat Feb 5 05:47:07 2005
+++ perl/regcomp.c Mon Sep 12 12:50:36 2005
@@ -1309,7 +1309,7 @@
SvGROW(last_str, (mincount * l) + 1);
repeatcpy(SvPVX(last_str) + l,
SvPVX(last_str), l, mincount - 1);
- SvCUR(last_str) *= mincount;
+ SvCUR_set(last_str, SvCUR(last_str) * mincount);
/* Add additional parts. */
SvCUR_set(data->last_found,
SvCUR(data->last_found) - l);
==== //depot/maint-5.8/perl/scope.c#25 (text) ====
Index: perl/scope.c
--- perl/scope.c#24~25390~ Mon Sep 12 09:18:42 2005
+++ perl/scope.c Mon Sep 12 12:50:36 2005
@@ -220,7 +220,7 @@
(SVp_NOK|SVp_POK)) >> PRIVSHIFT;
PL_tainted = oldtainted;
}
- SvMAGIC(sv) = SvMAGIC(osv);
+ SvMAGIC_set(sv, SvMAGIC(osv));
SvFLAGS(sv) |= SvMAGICAL(osv);
/* XXX SvMAGIC() is *shared* between osv and sv. This can
* lead to coredumps when both SVs are destroyed without one
@@ -293,7 +293,7 @@
{
SSGROW(6);
SSPUSHIV((IV)SvLEN(gv));
- SvLEN(gv) = 0; /* forget that anything was allocated here */
+ SvLEN_set(gv, 0); /* forget that anything was allocated here */
SSPUSHIV((IV)SvCUR(gv));
SSPUSHPTR(SvPVX(gv));
SvPOK_off(gv);
@@ -340,10 +340,10 @@
GvAV(gv) = Null(AV*);
av = GvAVn(gv);
if (SvMAGIC(oav)) {
- SvMAGIC(av) = SvMAGIC(oav);
+ SvMAGIC_set(av, SvMAGIC(oav));
SvFLAGS((SV*)av) |= SvMAGICAL(oav);
SvMAGICAL_off(oav);
- SvMAGIC(oav) = 0;
+ SvMAGIC_set(oav, NULL);
PL_localizing = 1;
SvSETMAGIC((SV*)av);
PL_localizing = 0;
@@ -364,10 +364,10 @@
GvHV(gv) = Null(HV*);
hv = GvHVn(gv);
if (SvMAGIC(ohv)) {
- SvMAGIC(hv) = SvMAGIC(ohv);
+ SvMAGIC_set(hv, SvMAGIC(ohv));
SvFLAGS((SV*)hv) |= SvMAGICAL(ohv);
SvMAGICAL_off(ohv);
- SvMAGIC(ohv) = 0;
+ SvMAGIC_set(ohv, NULL);
PL_localizing = 1;
SvSETMAGIC((SV*)hv);
PL_localizing = 0;
@@ -753,10 +753,10 @@
SvTYPE(sv) != SVt_PVGV)
{
(void)SvUPGRADE(value, SvTYPE(sv));
- SvMAGIC(value) = SvMAGIC(sv);
+ SvMAGIC_set(value, SvMAGIC(sv));
SvFLAGS(value) |= SvMAGICAL(sv);
SvMAGICAL_off(sv);
- SvMAGIC(sv) = 0;
+ SvMAGIC_set(sv, 0);
}
/* XXX This branch is pretty bogus. This code irretrievably
* clears(!) the magic on the SV (either to avoid further
@@ -771,7 +771,7 @@
SvMAGICAL_off(value);
/* XXX this is a leak when we get here because the
* mg_get() in save_scalar_at() croaked */
- SvMAGIC(value) = 0;
+ SvMAGIC_set(value, NULL);
}
*(SV**)ptr = value;
SvREFCNT_dec(sv);
@@ -787,10 +787,10 @@
gv = (GV*)SSPOPPTR;
if (GvAV(gv)) {
AV *goner = GvAV(gv);
- SvMAGIC(av) = SvMAGIC(goner);
+ SvMAGIC_set(av, SvMAGIC(goner));
SvFLAGS((SV*)av) |= SvMAGICAL(goner);
SvMAGICAL_off(goner);
- SvMAGIC(goner) = 0;
+ SvMAGIC_set(goner, NULL);
SvREFCNT_dec(goner);
}
GvAV(gv) = av;
@@ -805,10 +805,10 @@
gv = (GV*)SSPOPPTR;
if (GvHV(gv)) {
HV *goner = GvHV(gv);
- SvMAGIC(hv) = SvMAGIC(goner);
+ SvMAGIC_set(hv, SvMAGIC(goner));
SvFLAGS(hv) |= SvMAGICAL(goner);
SvMAGICAL_off(goner);
- SvMAGIC(goner) = 0;
+ SvMAGIC_set(goner, NULL);
SvREFCNT_dec(goner);
}
GvHV(gv) = hv;
@@ -874,8 +874,8 @@
Safefree(SvPVX(gv));
}
SvPV_set(gv, (char *)SSPOPPTR);
- SvCUR(gv) = (STRLEN)SSPOPIV;
- SvLEN(gv) = (STRLEN)SSPOPIV;
+ SvCUR_set(gv, (STRLEN)SSPOPIV);
+ SvLEN_set(gv, (STRLEN)SSPOPIV);
gp_free(gv);
GvGP(gv) = (GP*)ptr;
if (GvCVu(gv))
==== //depot/maint-5.8/perl/sv.c#135 (text) ====
Index: perl/sv.c
--- perl/sv.c#134~25390~ Mon Sep 12 09:18:42 2005
+++ perl/sv.c Mon Sep 12 12:50:36 2005
@@ -396,10 +396,10 @@
if (SvWEAKREF(sv)) {
sv_del_backref(sv);
SvWEAKREF_off(sv);
- SvRV(sv) = 0;
+ SvRV_set(sv, NULL);
} else {
SvROK_off(sv);
- SvRV(sv) = 0;
+ SvRV_set(sv, NULL);
SvREFCNT_dec(rv);
}
}
@@ -1408,19 +1408,19 @@
break;
case SVt_RV:
SvANY(sv) = new_XRV();
- SvRV(sv) = (SV*)pv;
+ SvRV_set(sv, (SV*)pv);
break;
case SVt_PV:
SvANY(sv) = new_XPV();
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
break;
case SVt_PVIV:
SvANY(sv) = new_XPVIV();
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
if (SvNIOK(sv))
(void)SvIOK_on(sv);
@@ -1429,30 +1429,30 @@
case SVt_PVNV:
SvANY(sv) = new_XPVNV();
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
break;
case SVt_PVMG:
SvANY(sv) = new_XPVMG();
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
break;
case SVt_PVLV:
SvANY(sv) = new_XPVLV();
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
LvTARGOFF(sv) = 0;
LvTARGLEN(sv) = 0;
LvTARG(sv) = 0;
@@ -1467,8 +1467,8 @@
AvFILLp(sv) = -1;
SvIV_set(sv, 0);
SvNV_set(sv, 0.0);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
AvALLOC(sv) = 0;
AvARYLEN(sv) = 0;
AvFLAGS(sv) = AVf_REAL;
@@ -1482,8 +1482,8 @@
HvMAX(sv) = 0;
HvTOTALKEYS(sv) = 0;
HvPLACEHOLDERS(sv) = 0;
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
HvRITER(sv) = 0;
HvEITER(sv) = 0;
HvPMROOT(sv) = 0;
@@ -1493,22 +1493,22 @@
SvANY(sv) = new_XPVCV();
Zero(SvANY(sv), 1, XPVCV);
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
break;
case SVt_PVGV:
SvANY(sv) = new_XPVGV();
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
GvGP(sv) = 0;
GvNAME(sv) = 0;
GvNAMELEN(sv) = 0;
@@ -1518,12 +1518,12 @@
case SVt_PVBM:
SvANY(sv) = new_XPVBM();
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
BmRARE(sv) = 0;
BmUSEFUL(sv) = 0;
BmPREVIOUS(sv) = 0;
@@ -1532,23 +1532,23 @@
SvANY(sv) = new_XPVFM();
Zero(SvANY(sv), 1, XPVFM);
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
break;
case SVt_PVIO:
SvANY(sv) = new_XPVIO();
Zero(SvANY(sv), 1, XPVIO);
SvPV_set(sv, pv);
- SvCUR(sv) = cur;
- SvLEN(sv) = len;
+ SvCUR_set(sv, cur);
+ SvLEN_set(sv, len);
SvIV_set(sv, iv);
SvNV_set(sv, nv);
- SvMAGIC(sv) = magic;
- SvSTASH(sv) = stash;
+ SvMAGIC_set(sv, magic);
+ SvSTASH_set(sv, stash);
IoPAGE_LEN(sv) = 60;
break;
}
@@ -1570,7 +1570,7 @@
assert(SvOOK(sv));
if (SvIVX(sv)) {
char *s = SvPVX(sv);
- SvLEN(sv) += SvIVX(sv);
+ SvLEN_set(sv, SvLEN(sv) + SvIVX(sv));
SvPV_set(sv, SvPVX(sv) - SvIVX(sv));
SvIV_set(sv, 0);
Move(s, SvPVX(sv), SvCUR(sv)+1, char);
@@ -3480,10 +3480,10 @@
s = (U8*)SvPVX(sv);
len = SvCUR(sv) + 1; /* Plus the \0 */
SvPV_set(sv, (char*)bytes_to_utf8((U8*)s, &len));
- SvCUR(sv) = len - 1;
+ SvCUR_set(sv, len - 1);
if (SvLEN(sv) != 0)
Safefree(s); /* No longer using what was there before. */
- SvLEN(sv) = len; /* No longer know the real size. */
+ SvLEN_set(sv, len); /* No longer know the real size. */
}
/* Mark as UTF-8 even if no hibit - saves scanning loop */
SvUTF8_on(sv);
@@ -3527,7 +3527,7 @@
Perl_croak(aTHX_ "Wide character");
}
}
- SvCUR(sv) = len;
+ SvCUR_set(sv, len);
}
}
SvUTF8_off(sv);
@@ -3966,11 +3966,12 @@
}
Safefree(pv);
}
- SvLEN(dstr)=SvCUR(dstr)=0;
+ SvLEN_set(dstr, 0);
+ SvCUR_set(dstr, 0);
}
}
(void)SvOK_off(dstr);
- SvRV(dstr) = SvREFCNT_inc(SvRV(sstr));
+ SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
SvROK_on(dstr);
if (sflags & SVp_NOK) {
SvNOKp_on(dstr);
@@ -4351,8 +4352,8 @@
SvFLAGS(sv) |= SVf_OOK;
}
SvNIOK_off(sv);
- SvLEN(sv) -= delta;
- SvCUR(sv) -= delta;
+ SvLEN_set(sv, SvLEN(sv) - delta);
+ SvCUR_set(sv, SvCUR(sv) - delta);
SvPV_set(sv, SvPVX(sv) + delta);
SvIV_set(sv, SvIVX(sv) + delta);
}
@@ -4398,7 +4399,7 @@
if (sstr == dstr)
sstr = SvPVX(dsv);
Move(sstr, SvPVX(dsv) + dlen, slen, char);
- SvCUR(dsv) += slen;
+ SvCUR_set(dsv, SvCUR(dsv) + slen);
*SvEND(dsv) = '\0';
(void)SvPOK_only_UTF8(dsv); /* validate pointer */
SvTAINT(dsv);
@@ -4521,7 +4522,7 @@
if (ptr == junk)
ptr = SvPVX(sv);
Move(ptr,SvPVX(sv)+tlen,len+1,char);
- SvCUR(sv) += len;
+ SvCUR_set(sv, SvCUR(sv) + len);
(void)SvPOK_only_UTF8(sv); /* validate pointer */
SvTAINT(sv);
}
@@ -4593,7 +4594,7 @@
}
Newz(702,mg, 1, MAGIC);
mg->mg_moremagic = SvMAGIC(sv);
- SvMAGIC(sv) = mg;
+ SvMAGIC_set(sv, mg);
/* Sometimes a magic contains a reference loop, where the sv and
object refer to each other. To prevent a reference loop that
@@ -4995,7 +4996,7 @@
while (midend > mid) /* shove everything down */
*--bigend = *--midend;
Move(little,big+offset,littlelen,char);
- SvCUR(bigstr) += i;
+ SvCUR_set(bigstr, SvCUR(bigstr) + i);
SvSETMAGIC(bigstr);
return;
}
@@ -5073,10 +5074,10 @@
mg_free(nsv);
else
sv_upgrade(nsv, SVt_PVMG);
- SvMAGIC(nsv) = SvMAGIC(sv);
+ SvMAGIC_set(nsv, SvMAGIC(sv));
SvFLAGS(nsv) |= SvMAGICAL(sv);
SvMAGICAL_off(sv);
- SvMAGIC(sv) = 0;
+ SvMAGIC_set(sv, NULL);
}
SvREFCNT(sv) = 0;
sv_clear(sv);
@@ -5137,7 +5138,7 @@
if(SvREFCNT(tmpref) < 2) {
/* tmpref is not kept alive! */
SvREFCNT(sv)--;
- SvRV(tmpref) = 0;
+ SvRV_set(tmpref, NULL);
SvROK_off(tmpref);
}
SvREFCNT_dec(tmpref);
@@ -6629,7 +6630,7 @@
}
/* oh,oh, the number grew */
SvGROW(sv, SvCUR(sv) + 2);
- SvCUR(sv)++;
+ SvCUR_set(sv, SvCUR(sv) + 1);
for (d = SvPVX(sv) + SvCUR(sv); d > SvPVX(sv); d--)
*d = d[-1];
if (isDIGIT(d[1]))
@@ -6897,9 +6898,9 @@
new_SV(sv);
sv_upgrade(sv, SVt_PVIV);
SvPV_set(sv, sharepvn(src, is_utf8?-len:len, hash));
- SvCUR(sv) = len;
+ SvCUR_set(sv, len);
SvUV_set(sv, hash);
- SvLEN(sv) = 0;
+ SvLEN_set(sv, 0);
SvREADONLY_on(sv);
SvFAKE_on(sv);
SvPOK_on(sv);
@@ -7034,7 +7035,7 @@
new_SV(sv);
sv_upgrade(sv, SVt_RV);
SvTEMP_off(tmpRef);
- SvRV(sv) = tmpRef;
+ SvRV_set(sv, tmpRef);
SvROK_on(sv);
return sv;
}
@@ -7745,7 +7746,7 @@
}
SvOK_off(rv);
- SvRV(rv) = sv;
+ SvRV_set(rv, sv);
SvROK_on(rv);
if (classname) {
@@ -7894,7 +7895,7 @@
if (SvTYPE(tmpRef) != SVt_PVIO)
++PL_sv_objcount;
(void)SvUPGRADE(tmpRef, SVt_PVMG);
- SvSTASH(tmpRef) = (HV*)SvREFCNT_inc(stash);
+ SvSTASH_set(tmpRef, (HV*)SvREFCNT_inc(stash));
if (Gv_AMG(stash))
SvAMAGIC_on(sv);
@@ -7962,10 +7963,10 @@
if (SvWEAKREF(sv)) {
sv_del_backref(sv);
SvWEAKREF_off(sv);
- SvRV(sv) = 0;
+ SvRV_set(sv, NULL);
return;
}
- SvRV(sv) = 0;
+ SvRV_set(sv, NULL);
SvROK_off(sv);
/* You can't have a || SvREADONLY(rv) here, as $a = $$a, where $a was
assigned to as BEGIN {$a = \"Foo"} will fail. */
@@ -9292,7 +9293,7 @@
Copy(eptr, p, elen, char);
p += elen;
*p = '\0';
- SvCUR(sv) = p - SvPVX(sv);
+ SvCUR_set(sv, p - SvPVX(sv));
svix = osvix;
continue; /* not "break" */
}
@@ -9365,7 +9366,7 @@
if (has_utf8)
SvUTF8_on(sv);
*p = '\0';
- SvCUR(sv) = p - SvPVX(sv);
+ SvCUR_set(sv, p - SvPVX(sv));
if (vectorize) {
esignlen = 0;
goto vector;
@@ -9906,9 +9907,9 @@
Perl_rvpv_dup(pTHX_ SV *dstr, SV *sstr, CLONE_PARAMS* param)
{
if (SvROK(sstr)) {
- SvRV(dstr) = SvWEAKREF(sstr)
- ? sv_dup(SvRV(sstr), param)
- : sv_dup_inc(SvRV(sstr), param);
+ SvRV_set(dstr, SvWEAKREF(sstr)
+ ? sv_dup(SvRV(sstr), param)
+ : sv_dup_inc(SvRV(sstr), param));
}
else if (SvPVX(sstr)) {
@@ -9945,7 +9946,7 @@
else {
/* Copy the Null */
if (SvTYPE(dstr) == SVt_RV)
- SvRV(dstr) = 0;
+ SvRV_set(dstr, NULL);
else
SvPV_set(dstr, 0);
}
@@ -10015,43 +10016,43 @@
break;
case SVt_PV:
SvANY(dstr) = new_XPV();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
break;
case SVt_PVIV:
SvANY(dstr) = new_XPVIV();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
break;
case SVt_PVNV:
SvANY(dstr) = new_XPVNV();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
break;
case SVt_PVMG:
SvANY(dstr) = new_XPVMG();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
break;
case SVt_PVBM:
SvANY(dstr) = new_XPVBM();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
BmRARE(dstr) = BmRARE(sstr);
BmUSEFUL(dstr) = BmUSEFUL(sstr);
@@ -10059,12 +10060,12 @@
break;
case SVt_PVLV:
SvANY(dstr) = new_XPVLV();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
LvTARGOFF(dstr) = LvTARGOFF(sstr); /* XXX sometimes holds PMOP*
when DEBUGGING */
LvTARGLEN(dstr) = LvTARGLEN(sstr);
@@ -10091,12 +10092,12 @@
}
}
SvANY(dstr) = new_XPVGV();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
GvNAMELEN(dstr) = GvNAMELEN(sstr);
GvNAME(dstr) = SAVEPVN(GvNAME(sstr), GvNAMELEN(sstr));
@@ -10107,12 +10108,12 @@
break;
case SVt_PVIO:
SvANY(dstr) = new_XPVIO();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
IoIFP(dstr) = fp_dup(IoIFP(sstr), IoTYPE(sstr), param);
if (IoOFP(sstr) == IoIFP(sstr))
@@ -10149,12 +10150,12 @@
break;
case SVt_PVAV:
SvANY(dstr) = new_XPVAV();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
AvARYLEN((AV*)dstr) = sv_dup_inc(AvARYLEN((AV*)sstr), param);
AvFLAGS((AV*)dstr) = AvFLAGS((AV*)sstr);
if (AvARRAY((AV*)sstr)) {
@@ -10186,12 +10187,12 @@
break;
case SVt_PVHV:
SvANY(dstr) = new_XPVHV();
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
HvRITER((HV*)dstr) = HvRITER((HV*)sstr);
if (HvARRAY((HV*)sstr)) {
STRLEN i = 0;
@@ -10226,12 +10227,12 @@
case SVt_PVCV:
SvANY(dstr) = new_XPVCV();
dup_pvcv:
- SvCUR(dstr) = SvCUR(sstr);
- SvLEN(dstr) = SvLEN(sstr);
+ SvCUR_set(dstr, SvCUR(sstr));
+ SvLEN_set(dstr, SvLEN(sstr));
SvIV_set(dstr, SvIVX(sstr));
SvNV_set(dstr, SvNVX(sstr));
- SvMAGIC(dstr) = mg_dup(SvMAGIC(sstr), param);
- SvSTASH(dstr) = hv_dup_inc(SvSTASH(sstr), param);
+ SvMAGIC_set(dstr, mg_dup(SvMAGIC(sstr), param));
+ SvSTASH_set(dstr, hv_dup_inc(SvSTASH(sstr), param));
Perl_rvpv_dup(aTHX_ dstr, sstr, param);
CvSTASH(dstr) = hv_dup(CvSTASH(sstr), param); /* NOTE: not refcounted
*/
CvSTART(dstr) = CvSTART(sstr);
@@ -10933,8 +10934,8 @@
SvFLAGS(&PL_sv_no) = SVp_IOK|SVf_IOK|SVp_NOK|SVf_NOK
|SVp_POK|SVf_POK|SVf_READONLY|SVt_PVNV;
SvPV_set(&PL_sv_no, SAVEPVN(PL_No, 0));
- SvCUR(&PL_sv_no) = 0;
- SvLEN(&PL_sv_no) = 1;
+ SvCUR_set(&PL_sv_no, 0);
+ SvLEN_set(&PL_sv_no, 1);
SvIV_set(&PL_sv_no, 0);
SvNV_set(&PL_sv_no, 0);
ptr_table_store(PL_ptr_table, &proto_perl->Isv_no, &PL_sv_no);
@@ -10944,8 +10945,8 @@
SvFLAGS(&PL_sv_yes) = SVp_IOK|SVf_IOK|SVp_NOK|SVf_NOK
|SVp_POK|SVf_POK|SVf_READONLY|SVt_PVNV;
SvPV_set(&PL_sv_yes, SAVEPVN(PL_Yes, 1));
- SvCUR(&PL_sv_yes) = 1;
- SvLEN(&PL_sv_yes) = 2;
+ SvCUR_set(&PL_sv_yes, 1);
+ SvLEN_set(&PL_sv_yes, 2);
SvIV_set(&PL_sv_yes, 1);
SvNV_set(&PL_sv_yes, 1);
ptr_table_store(PL_ptr_table, &proto_perl->Isv_yes, &PL_sv_yes);
==== //depot/maint-5.8/perl/sv.h#36 (text) ====
Index: perl/sv.h
--- perl/sv.h#35~25390~ Mon Sep 12 09:18:42 2005
+++ perl/sv.h Mon Sep 12 12:50:36 2005
@@ -761,24 +761,42 @@
#define SvIV_please(sv) \
STMT_START {if (!SvIOKp(sv) && (SvNOK(sv) || SvPOK(sv))) \
(void) SvIV(sv); } STMT_END
+/* Put the asserts back at some point and figure out where they reveal bugs
+*/
#define SvIV_set(sv, val) \
STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
(((XPVIV*) SvANY(sv))->xiv_iv = (val)); } STMT_END
#define SvNV_set(sv, val) \
STMT_START { assert(SvTYPE(sv) == SVt_NV || SvTYPE(sv) >= SVt_PVNV); \
(SvNVX(sv) = (val)); } STMT_END
+/* assert(SvTYPE(sv) >= SVt_PV); */
#define SvPV_set(sv, val) \
- STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
+ STMT_START { \
(((XPV*) SvANY(sv))->xpv_pv = (val)); } STMT_END
+/* assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); */
#define SvUV_set(sv, val) \
- STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
+ STMT_START { \
(((XPVUV*)SvANY(sv))->xuv_uv = (val)); } STMT_END
+/* assert(SvTYPE(sv) >= SVt_RV); */
+#define SvRV_set(sv, val) \
+ STMT_START { \
+ (((XRV*)SvANY(sv))->xrv_rv = (val)); } STMT_END
+/* assert(SvTYPE(sv) >= SVt_PVMG); */
+#define SvMAGIC_set(sv, val) \
+ STMT_START { \
+ (((XPVMG*)SvANY(sv))->xmg_magic = (val)); } STMT_END
+/* assert(SvTYPE(sv) >= SVt_PVMG); */
+#define SvSTASH_set(sv, val) \
+ STMT_START { \
+ (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END
+/* assert(SvTYPE(sv) >= SVt_PV); */
#define SvCUR_set(sv, val) \
- STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
- (SvCUR(sv) = (val)); } STMT_END
+ STMT_START { \
+ (((XPV*) SvANY(sv))->xpv_cur = (val)); } STMT_END
+/* assert(SvTYPE(sv) >= SVt_PV); */
#define SvLEN_set(sv, val) \
- STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
- (SvLEN(sv) = (val)); } STMT_END
+ STMT_START { \
+ (((XPV*) SvANY(sv))->xpv_len = (val)); } STMT_END
#define SvEND_set(sv, val) \
STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
(SvCUR(sv) = (val) - SvPVX(sv)); } STMT_END
==== //depot/maint-5.8/perl/toke.c#63 (text) ====
Index: perl/toke.c
--- perl/toke.c#62~25390~ Mon Sep 12 09:18:42 2005
+++ perl/toke.c Mon Sep 12 12:50:36 2005
@@ -5086,7 +5086,7 @@
Perl_warner(aTHX_ packWARN(WARN_SYNTAX),
"Illegal character in prototype for %"SVf"
: %s",
PL_subname, d);
- SvCUR(PL_lex_stuff) = tmp;
+ SvCUR_set(PL_lex_stuff, tmp);
have_proto = TRUE;
s = skipspace(s);
@@ -10357,7 +10357,7 @@
char *end = SvPVX(stuff) + SvCUR(stuff);
end[-2] = '\n';
end[-1] = '\0';
- SvCUR(stuff)--;
+ SvCUR_set(stuff, SvCUR(stuff) - 1);
}
#endif
}
End of Patch.