Change 24743 by [EMAIL PROTECTED] on 2005/06/07 21:16:13
More SvPV consting
Affected files ...
... //depot/perl/doop.c#155 edit
... //depot/perl/mg.c#338 edit
... //depot/perl/perl.c#619 edit
... //depot/perl/pp.c#463 edit
... //depot/perl/pp_ctl.c#447 edit
... //depot/perl/pp_hot.c#396 edit
... //depot/perl/pp_pack.c#96 edit
... //depot/perl/pp_sys.c#410 edit
... //depot/perl/sv.c#878 edit
Differences ...
==== //depot/perl/doop.c#155 (text) ====
Index: perl/doop.c
--- perl/doop.c#154~24740~ Tue Jun 7 11:38:39 2005
+++ perl/doop.c Tue Jun 7 14:16:13 2005
@@ -605,7 +605,7 @@
if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_IDENTICAL))
Perl_croak(aTHX_ PL_no_modify);
}
- (void)SvPV(sv, len);
+ (void)SvPV_const(sv, len);
if (!len)
return 0;
if (!(PL_op->op_private & OPpTRANS_IDENTICAL)) {
@@ -717,7 +717,7 @@
Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
{
STRLEN srclen, len;
- unsigned char *s = (unsigned char *) SvPV(sv, srclen);
+ const unsigned char *s = (const unsigned char *) SvPV_const(sv, srclen);
UV retnum = 0;
if (offset < 0)
==== //depot/perl/mg.c#338 (text) ====
Index: perl/mg.c
--- perl/mg.c#337~24740~ Tue Jun 7 11:38:39 2005
+++ perl/mg.c Tue Jun 7 14:16:13 2005
@@ -263,11 +263,11 @@
}
if (DO_UTF8(sv)) {
- U8 *s = (U8*)SvPV(sv, len);
+ const U8 *s = (U8*)SvPV_const(sv, len);
len = Perl_utf8_length(aTHX_ s, s + len);
}
else
- (void)SvPV(sv, len);
+ (void)SvPV_const(sv, len);
return len;
}
==== //depot/perl/perl.c#619 (text) ====
Index: perl/perl.c
--- perl/perl.c#618~24689~ Fri Jun 3 01:31:26 2005
+++ perl/perl.c Tue Jun 7 14:16:13 2005
@@ -4703,7 +4703,7 @@
case 0:
call_list_body(cv);
atsv = ERRSV;
- (void)SvPV(atsv, len);
+ (void)SvPV_const(atsv, len);
if (len) {
PL_curcop = &PL_compiling;
CopLINE_set(PL_curcop, oldline);
==== //depot/perl/pp.c#463 (text) ====
Index: perl/pp.c
--- perl/pp.c#462~24740~ Tue Jun 7 11:38:39 2005
+++ perl/pp.c Tue Jun 7 14:16:13 2005
@@ -2421,7 +2421,7 @@
register I32 anum;
STRLEN len;
- (void)SvPV_nomg(sv,len); /* force check for uninit var */
+ (void)SvPV_nomg_const(sv,len); /* force check for uninit var */
sv_setsv_nomg(TARG, sv);
tmps = (U8*)SvPV_force(TARG, len);
anum = len;
@@ -3194,8 +3194,8 @@
SV *temp = Nullsv;
I32 offset;
I32 retval;
- char *tmps;
- char *tmps2;
+ const char *tmps;
+ const char *tmps2;
STRLEN biglen;
I32 arybase = PL_curcop->cop_arybase;
int big_utf8;
@@ -3213,7 +3213,7 @@
/* One needs to be upgraded. */
SV *bytes = little_utf8 ? big : little;
STRLEN len;
- char *p = SvPV(bytes, len);
+ const char *p = SvPV_const(bytes, len);
temp = newSVpvn(p, len);
@@ -3231,7 +3231,7 @@
}
if (big_utf8 && offset > 0)
sv_pos_u2b(big, &offset, 0);
- tmps = SvPV(big, biglen);
+ tmps = SvPV_const(big, biglen);
if (offset < 0)
offset = 0;
else if (offset > (I32)biglen)
@@ -3259,8 +3259,8 @@
STRLEN llen;
I32 offset;
I32 retval;
- char *tmps;
- char *tmps2;
+ const char *tmps;
+ const char *tmps2;
I32 arybase = PL_curcop->cop_arybase;
int big_utf8;
int little_utf8;
@@ -3291,8 +3291,8 @@
little = temp;
}
}
- tmps2 = SvPV(little, llen);
- tmps = SvPV(big, blen);
+ tmps2 = SvPV_const(little, llen);
+ tmps = SvPV_const(big, blen);
if (MAXARG < 3)
offset = blen;
@@ -3414,7 +3414,7 @@
dPOPTOPssrl;
STRLEN n_a;
STRLEN len;
- char *tmps = SvPV(left, len);
+ const char *tmps = SvPV_const(left, len);
if (DO_UTF8(left)) {
/* If Unicode, try to downgrade.
@@ -3579,7 +3579,6 @@
{
dSP;
SV *sv = TOPs;
- register U8 *s;
STRLEN len;
SvGETMAGIC(sv);
@@ -3587,10 +3586,11 @@
dTARGET;
STRLEN ulen;
register U8 *d;
- U8 *send;
+ const U8 *s;
+ const U8 *send;
U8 tmpbuf[UTF8_MAXBYTES+1];
- s = (U8*)SvPV_nomg(sv,len);
+ s = (const U8*)SvPV_nomg_const(sv,len);
if (!len) {
SvUTF8_off(TARG); /* decontaminate */
sv_setpvn(TARG, "", 0);
@@ -3631,6 +3631,7 @@
}
}
else {
+ U8 *s;
if (!SvPADTMP(sv) || SvREADONLY(sv)) {
dTARGET;
SvUTF8_off(TARG); /* decontaminate */
@@ -3640,7 +3641,7 @@
}
s = (U8*)SvPV_force_nomg(sv, len);
if (len) {
- register U8 *send = s + len;
+ const register U8 *send = s + len;
if (IN_LOCALE_RUNTIME) {
TAINT;
@@ -3662,18 +3663,18 @@
{
dSP;
SV *sv = TOPs;
- register U8 *s;
STRLEN len;
SvGETMAGIC(sv);
if (DO_UTF8(sv)) {
dTARGET;
+ const U8 *s;
STRLEN ulen;
register U8 *d;
- U8 *send;
+ const U8 *send;
U8 tmpbuf[UTF8_MAXBYTES_CASE+1];
- s = (U8*)SvPV_nomg(sv,len);
+ s = (const U8*)SvPV_nomg_const(sv,len);
if (!len) {
SvUTF8_off(TARG); /* decontaminate */
sv_setpvn(TARG, "", 0);
@@ -3733,6 +3734,7 @@
}
}
else {
+ U8 *s;
if (!SvPADTMP(sv) || SvREADONLY(sv)) {
dTARGET;
SvUTF8_off(TARG); /* decontaminate */
==== //depot/perl/pp_ctl.c#447 (text) ====
Index: perl/pp_ctl.c
--- perl/pp_ctl.c#446~24742~ Tue Jun 7 12:45:13 2005
+++ perl/pp_ctl.c Tue Jun 7 14:16:13 2005
@@ -1835,7 +1835,7 @@
STRLEN n_a;
cx->blk_loop.iterlval = newSVsv(sv);
(void) SvPV_force(cx->blk_loop.iterlval,n_a);
- (void) SvPV(right,n_a);
+ (void) SvPV_nolen_const(right);
}
}
else if (PL_op->op_private & OPpITER_REVERSED) {
==== //depot/perl/pp_hot.c#396 (text) ====
Index: perl/pp_hot.c
--- perl/pp_hot.c#395~24740~ Tue Jun 7 11:38:39 2005
+++ perl/pp_hot.c Tue Jun 7 14:16:13 2005
@@ -173,7 +173,7 @@
mg_get(left); /* or mg_get(left) may happen here */
if (!SvOK(TARG))
sv_setpvn(left, "", 0);
- (void)SvPV_nomg(left, llen); /* Needed to set UTF8 flag */
+ (void)SvPV_nomg_const(left, llen); /* Needed to set UTF8 flag */
lbyte = !DO_UTF8(left);
if (IN_BYTES)
SvUTF8_off(TARG);
==== //depot/perl/pp_pack.c#96 (text) ====
Index: perl/pp_pack.c
--- perl/pp_pack.c#95~24740~ Tue Jun 7 11:38:39 2005
+++ perl/pp_pack.c Tue Jun 7 14:16:13 2005
@@ -2005,8 +2005,7 @@
continue;
}
if (++bytes >= sizeof(UV)) { /* promote to string */
- char *t;
- STRLEN n_a;
+ const char *t;
sv = Perl_newSVpvf(aTHX_ "%.*"UVf,
(int)TYPE_DIGITS(UV), auv);
while (s < strend) {
@@ -2017,7 +2016,7 @@
break;
}
}
- t = SvPV(sv, n_a);
+ t = SvPV_nolen_const(sv);
while (*t == '0')
t++;
sv_chop(sv, t);
@@ -2904,14 +2903,14 @@
}
case 'H':
case 'h': {
- char *str, *end;
+ const char *str, *end;
I32 l, field_len;
U8 bits;
bool utf8_source;
U32 utf8_flags;
fromstr = NEXTFROM;
- str = SvPV(fromstr, fromlen);
+ str = SvPV_const(fromstr, fromlen);
end = str + fromlen;
if (DO_UTF8(fromstr)) {
utf8_source = TRUE;
==== //depot/perl/pp_sys.c#410 (text) ====
Index: perl/pp_sys.c
--- perl/pp_sys.c#409~24740~ Tue Jun 7 11:38:39 2005
+++ perl/pp_sys.c Tue Jun 7 14:16:13 2005
@@ -3704,7 +3704,7 @@
dSP;
#ifdef HAS_SYMLINK
dTARGET;
- char *tmps;
+ const char *tmps;
char buf[MAXPATHLEN];
int len;
STRLEN n_a;
@@ -3712,7 +3712,7 @@
#ifndef INCOMPLETE_TAINTS
TAINT;
#endif
- tmps = POPpx;
+ tmps = POPpconstx;
len = readlink(tmps, buf, sizeof(buf) - 1);
EXTEND(SP, 1);
if (len < 0)
@@ -3890,7 +3890,7 @@
#if defined(Direntry_t) && defined(HAS_READDIR)
dSP;
STRLEN n_a;
- char *dirname = POPpx;
+ const char *dirname = POPpconstx;
GV *gv = (GV*)POPs;
register IO *io = GvIOn(gv);
@@ -4181,7 +4181,7 @@
if (PL_tainting) {
TAINT_ENV();
while (++MARK <= SP) {
- (void)SvPV_nolen(*MARK); /* stringify for taint check */
+ (void)SvPV_nolen_const(*MARK); /* stringify for taint check */
if (PL_tainted)
break;
}
@@ -4310,7 +4310,7 @@
if (PL_tainting) {
TAINT_ENV();
while (++MARK <= SP) {
- (void)SvPV_nolen(*MARK); /* stringify for taint check */
+ (void)SvPV_nolen_const(*MARK); /* stringify for taint check */
if (PL_tainted)
break;
}
==== //depot/perl/sv.c#878 (text) ====
Index: perl/sv.c
--- perl/sv.c#877~24742~ Tue Jun 7 12:45:13 2005
+++ perl/sv.c Tue Jun 7 14:16:13 2005
@@ -3410,6 +3410,8 @@
mg_get(sv);
if (SvPOKp(sv)) {
*lp = SvCUR(sv);
+ if (flags & SV_MUTABLE_RETURN)
+ return SvPVX_mutable(sv);
if (flags & SV_CONST_RETURN)
return (char *)SvPVX_const(sv);
return SvPVX(sv);
@@ -3651,6 +3653,8 @@
PTR2UV(sv),SvPVX_const(sv)));
if (flags & SV_CONST_RETURN)
return (char *)SvPVX_const(sv);
+ if (flags & SV_MUTABLE_RETURN)
+ return SvPVX_mutable(sv);
return SvPVX(sv);
tokensave:
End of Patch.