summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doio.c26
-rw-r--r--doop.c12
-rw-r--r--gv.c4
-rw-r--r--mg.c4
-rw-r--r--perlio.c16
-rw-r--r--pp.c3
-rw-r--r--pp_ctl.c9
-rw-r--r--pp_hot.c2
-rw-r--r--pp_pack.c2
-rw-r--r--pp_sys.c34
-rw-r--r--sv.c7
-rw-r--r--toke.c2
-rw-r--r--universal.c8
-rw-r--r--util.c2
14 files changed, 63 insertions, 68 deletions
diff --git a/doio.c b/doio.c
index 7457c90718..79ca1fd174 100644
--- a/doio.c
+++ b/doio.c
@@ -1176,7 +1176,7 @@ Perl_mode_from_discipline(pTHX_ SV *discp)
int mode = O_BINARY;
if (discp) {
STRLEN len;
- const char *s = SvPV(discp,len);
+ const char *s = SvPV_const(discp,len);
while (*s) {
if (*s == ':') {
switch (s[1]) {
@@ -1423,7 +1423,6 @@ Perl_my_lstat(pTHX)
{
dSP;
SV *sv;
- STRLEN n_a;
if (PL_op->op_flags & OPf_REF) {
EXTEND(SP,1);
if (cGVOP_gv == PL_defgv) {
@@ -1451,9 +1450,9 @@ Perl_my_lstat(pTHX)
return (PL_laststatval = -1);
}
/* XXX Do really need to be calling SvPV() all these times? */
- sv_setpv(PL_statname,SvPV(sv, n_a));
- PL_laststatval = PerlLIO_lstat(SvPV(sv, n_a),&PL_statcache);
- if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(SvPV(sv, n_a), '\n'))
+ sv_setpv(PL_statname,SvPV_nolen_const(sv));
+ PL_laststatval = PerlLIO_lstat(SvPV_nolen_const(sv),&PL_statcache);
+ if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(SvPV_nolen_const(sv), '\n'))
Perl_warner(aTHX_ packWARN(WARN_NEWLINE), PL_warn_nl, "lstat");
return PL_laststatval;
}
@@ -1476,20 +1475,19 @@ Perl_do_aexec5(pTHX_ SV *really, register SV **mark, register SV **sp,
#else
register char **a;
const char *tmps = Nullch;
- STRLEN n_a;
if (sp > mark) {
New(401,PL_Argv, sp - mark + 1, char*);
a = PL_Argv;
while (++mark <= sp) {
if (*mark)
- *a++ = SvPVx(*mark, n_a);
+ *a++ = (char*)SvPV_nolen_const(*mark);
else
*a++ = "";
}
*a = Nullch;
if (really)
- tmps = SvPV(really, n_a);
+ tmps = SvPV_nolen_const(really);
if ((!really && *PL_Argv[0] != '/') ||
(really && *tmps != '/')) /* will execvp use PATH? */
TAINT_ENV(); /* testing IFS here is overkill, probably */
@@ -1674,7 +1672,6 @@ Perl_apply(pTHX_ I32 type, register SV **mark, register SV **sp)
const char *what;
const char *s;
SV **oldmark = mark;
- STRLEN n_a;
#define APPLY_TAINT_PROPER() \
STMT_START { \
@@ -1700,7 +1697,7 @@ Perl_apply(pTHX_ I32 type, register SV **mark, register SV **sp)
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- const char *name = SvPVx(*mark, n_a);
+ const char *name = SvPV_nolen_const(*mark);
APPLY_TAINT_PROPER();
if (PerlLIO_chmod(name, val))
tot--;
@@ -1718,7 +1715,7 @@ Perl_apply(pTHX_ I32 type, register SV **mark, register SV **sp)
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- const char *name = SvPVx(*mark, n_a);
+ const char *name = SvPV_nolen_const(*mark);
APPLY_TAINT_PROPER();
if (PerlLIO_chown(name, val, val2))
tot--;
@@ -1738,7 +1735,7 @@ nothing in the core.
APPLY_TAINT_PROPER();
if (mark == sp)
break;
- s = SvPVx_const(*++mark, n_a);
+ s = SvPVx_nolen_const(*++mark);
if (isALPHA(*s)) {
if (*s == 'S' && s[1] == 'I' && s[2] == 'G')
s += 3;
@@ -1808,7 +1805,7 @@ nothing in the core.
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- s = SvPVx_const(*mark, n_a);
+ s = SvPV_nolen_const(*mark);
APPLY_TAINT_PROPER();
if (PL_euid || PL_unsafe) {
if (UNLINK(s))
@@ -1862,8 +1859,7 @@ nothing in the core.
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- STRLEN n_a;
- const char *name = SvPVx(*mark, n_a);
+ const char *name = SvPV_nolen_const(*mark);
APPLY_TAINT_PROPER();
if (PerlLIO_utime(name, utbufp))
tot--;
diff --git a/doop.c b/doop.c
index adf36ea021..d7ab071e84 100644
--- a/doop.c
+++ b/doop.c
@@ -1149,12 +1149,12 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
register char *dc;
STRLEN leftlen;
STRLEN rightlen;
- register char *lc;
- register char *rc;
+ register const char *lc;
+ register const char *rc;
register I32 len;
I32 lensave;
- char *lsave;
- char *rsave;
+ const char *lsave;
+ const char *rsave;
const bool left_utf = DO_UTF8(left);
const bool right_utf = DO_UTF8(right);
I32 needlen = 0;
@@ -1166,8 +1166,8 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
if (sv != left || (optype != OP_BIT_AND && !SvOK(sv) && !SvGMAGICAL(sv)))
sv_setpvn(sv, "", 0); /* avoid undef warning on |= and ^= */
- lsave = lc = SvPV_nomg(left, leftlen);
- rsave = rc = SvPV_nomg(right, rightlen);
+ lsave = lc = SvPV_nomg_const(left, leftlen);
+ rsave = rc = SvPV_nomg_const(right, rightlen);
len = leftlen < rightlen ? leftlen : rightlen;
lensave = len;
if ((left_utf || right_utf) && (sv == left || sv == right)) {
diff --git a/gv.c b/gv.c
index f757f4c339..68dbd720c1 100644
--- a/gv.c
+++ b/gv.c
@@ -498,7 +498,7 @@ Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
return Nullgv;
if (stash) {
if (SvTYPE(stash) < SVt_PVHV) {
- packname = SvPV((SV*)stash, packname_len);
+ packname = SvPV_const((SV*)stash, packname_len);
stash = Nullhv;
}
else {
@@ -1865,7 +1865,7 @@ bool
Perl_is_gv_magical_sv(pTHX_ SV *name, U32 flags)
{
STRLEN len;
- const char *temp = SvPV(name, len);
+ const char *temp = SvPV_const(name, len);
return is_gv_magical(temp, len, flags);
}
diff --git a/mg.c b/mg.c
index e7f3b2107b..e1618474e2 100644
--- a/mg.c
+++ b/mg.c
@@ -953,11 +953,11 @@ Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg)
{
dVAR;
register char *s;
- char *ptr;
+ const char *ptr;
STRLEN len, klen;
s = SvPV(sv,len);
- ptr = MgPV(mg,klen);
+ ptr = MgPV_const(mg,klen);
my_setenv(ptr, s);
#ifdef DYNAMIC_ENV_FETCH
diff --git a/perlio.c b/perlio.c
index 05963d0ff0..55148e8f38 100644
--- a/perlio.c
+++ b/perlio.c
@@ -308,7 +308,7 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd,
if (*args == &PL_sv_undef)
return PerlIO_tmpfile();
else {
- const char *name = SvPV_nolen(*args);
+ const char *name = SvPV_nolen_const(*args);
if (*mode == IoTYPE_NUMERIC) {
fd = PerlLIO_open3(name, imode, perm);
if (fd >= 0)
@@ -334,7 +334,7 @@ XS(XS_PerlIO__Layer__find)
if (items < 2)
Perl_croak(aTHX_ "Usage class->find(name[,load])");
else {
- const char *name = SvPV_nolen(ST(1));
+ const char *name = SvPV_nolen_const(ST(1));
ST(0) = (strEQ(name, "crlf")
|| strEQ(name, "raw")) ? &PL_sv_yes : &PL_sv_undef;
XSRETURN(1);
@@ -844,7 +844,7 @@ XS(XS_io_MODIFY_SCALAR_ATTRIBUTES)
Perl_warn(aTHX_ "attrib %" SVf, sv);
for (i = 2; i < items; i++) {
STRLEN len;
- const char *name = SvPV(ST(i), len);
+ const char *name = SvPV_const(ST(i), len);
SV *layer = PerlIO_find_layer(aTHX_ name, len, 1);
if (layer) {
av_push(av, SvREFCNT_inc(layer));
@@ -875,7 +875,7 @@ XS(XS_PerlIO__Layer__NoWarnings)
*/
dXSARGS;
if (items)
- PerlIO_debug("warning:%s\n",SvPV_nolen(ST(0)));
+ PerlIO_debug("warning:%s\n",SvPV_nolen_const(ST(0)));
XSRETURN(0);
}
@@ -886,7 +886,7 @@ XS(XS_PerlIO__Layer__find)
Perl_croak(aTHX_ "Usage class->find(name[,load])");
else {
STRLEN len;
- const char *name = SvPV(ST(1), len);
+ const char *name = SvPV_const(ST(1), len);
const bool load = (items > 2) ? SvTRUE(ST(2)) : 0;
PerlIO_funcs *layer = PerlIO_find_layer(aTHX_ name, len, load);
ST(0) =
@@ -2443,7 +2443,7 @@ PerlIOUnix_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
perm = 0666;
}
if (imode != -1) {
- const char *path = SvPV_nolen(*args);
+ const char *path = SvPV_nolen_const(*args);
fd = PerlLIO_open3(path, imode, perm);
}
}
@@ -2732,7 +2732,7 @@ PerlIOStdio_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
{
char tmode[8];
if (PerlIOValid(f)) {
- const char *path = SvPV_nolen(*args);
+ const char *path = SvPV_nolen_const(*args);
PerlIOStdio *s = PerlIOSelf(f, PerlIOStdio);
FILE *stdio;
PerlIOUnix_refcnt_dec(fileno(s->stdio));
@@ -2746,7 +2746,7 @@ PerlIOStdio_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
}
else {
if (narg > 0) {
- const char *path = SvPV_nolen(*args);
+ const char *path = SvPV_nolen_const(*args);
if (*mode == IoTYPE_NUMERIC) {
mode++;
fd = PerlLIO_open3(path, imode, perm);
diff --git a/pp.c b/pp.c
index 896b5737f2..3299076a6f 100644
--- a/pp.c
+++ b/pp.c
@@ -553,10 +553,9 @@ PP(pp_gelem)
SV *tmpRef;
const char *elem;
dSP;
- STRLEN n_a;
sv = POPs;
- elem = SvPV(sv, n_a);
+ elem = SvPV_nolen_const(sv);
gv = (GV*)POPs;
tmpRef = Nullsv;
sv = Nullsv;
diff --git a/pp_ctl.c b/pp_ctl.c
index afc7deafb0..befebb6ee9 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -78,9 +78,7 @@ PP(pp_regcomp)
{
dSP;
register PMOP *pm = (PMOP*)cLOGOP->op_other;
- register char *t;
SV *tmpstr;
- STRLEN len;
MAGIC *mg = Null(MAGIC*);
/* prevent recompiling under /o and ithreads. */
@@ -129,7 +127,8 @@ PP(pp_regcomp)
PM_SETRE(pm, ReREFCNT_inc(re));
}
else {
- t = SvPV(tmpstr, len);
+ STRLEN len;
+ const char *t = SvPV_const(tmpstr, len);
/* Check against the last compiled regexp. */
if (!PM_GETRE(pm) || !PM_GETRE(pm)->precomp ||
@@ -151,7 +150,7 @@ PP(pp_regcomp)
if (pm->op_pmdynflags & PMdf_UTF8)
t = (char*)bytes_to_utf8((U8*)t, &len);
}
- PM_SETRE(pm, CALLREGCOMP(aTHX_ t, t + len, pm));
+ PM_SETRE(pm, CALLREGCOMP(aTHX_ (char *)t, (char *)t + len, pm));
if (!DO_UTF8(tmpstr) && (pm->op_pmdynflags & PMdf_UTF8))
Safefree(t);
PL_reginterp_cnt = 0; /* XXXX Be extra paranoid - needed
@@ -1710,7 +1709,7 @@ PP(pp_reset)
if (MAXARG < 1)
tmps = "";
else
- tmps = POPpx;
+ tmps = POPpconstx;
sv_reset(tmps, CopSTASH(PL_curcop));
PUSHs(&PL_sv_yes);
RETURN;
diff --git a/pp_hot.c b/pp_hot.c
index 692586217e..5115e0342e 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1719,7 +1719,7 @@ PP(pp_helem)
else {
if (!preeminent) {
STRLEN keylen;
- const char * const key = SvPV(keysv, keylen);
+ const char * const key = SvPV_const(keysv, keylen);
SAVEDELETE(hv, savepvn(key,keylen), keylen);
} else
save_helem(hv, keysv, svp);
diff --git a/pp_pack.c b/pp_pack.c
index 6d57ddca8c..b3c2f07018 100644
--- a/pp_pack.c
+++ b/pp_pack.c
@@ -2750,7 +2750,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
const char *aptr;
fromstr = NEXTFROM;
- aptr = SvPV(fromstr, fromlen);
+ aptr = SvPV_const(fromstr, fromlen);
if (DO_UTF8(fromstr)) {
const char *end, *s;
diff --git a/pp_sys.c b/pp_sys.c
index bce7ffe068..0a25560a72 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -335,7 +335,7 @@ PP(pp_backtick)
if (fp) {
const char *type = NULL;
if (PL_curcop->cop_io) {
- type = SvPV_nolen(PL_curcop->cop_io);
+ type = SvPV_nolen_const(PL_curcop->cop_io);
}
if (type && *type)
PerlIO_apply_layers(aTHX_ fp,mode,type);
@@ -446,14 +446,14 @@ PP(pp_warn)
else {
tmpsv = TOPs;
}
- tmps = SvPV(tmpsv, len);
+ tmps = SvPV_const(tmpsv, len);
if ((!tmps || !len) && PL_errgv) {
SV *error = ERRSV;
SvUPGRADE(error, SVt_PV);
if (SvPOK(error) && SvCUR(error))
sv_catpv(error, "\t...caught");
tmpsv = error;
- tmps = SvPV(tmpsv, len);
+ tmps = SvPV_const(tmpsv, len);
}
if (!tmps || !len)
tmpsv = sv_2mortal(newSVpvn("Warning: something's wrong", 26));
@@ -513,7 +513,7 @@ PP(pp_die)
if (SvPOK(error) && SvCUR(error))
sv_catpv(error, "\t...propagated");
tmpsv = error;
- tmps = SvPV(tmpsv, len);
+ tmps = SvPV_const(tmpsv, len);
}
}
if (!tmps || !len)
@@ -766,11 +766,11 @@ PP(pp_binmode)
PUTBACK;
if (PerlIO_binmode(aTHX_ fp,IoTYPE(io),mode_from_discipline(discp),
- (discp) ? SvPV_nolen(discp) : Nullch)) {
+ (discp) ? SvPV_nolen_const(discp) : Nullch)) {
if (IoOFP(io) && IoOFP(io) != IoIFP(io)) {
if (!PerlIO_binmode(aTHX_ IoOFP(io),IoTYPE(io),
mode_from_discipline(discp),
- (discp) ? SvPV_nolen(discp) : Nullch)) {
+ (discp) ? SvPV_nolen_const(discp) : Nullch)) {
SPAGAIN;
RETPUSHUNDEF;
}
@@ -1301,9 +1301,9 @@ PP(pp_enterwrite)
if (!cv) {
if (fgv) {
SV * const tmpsv = sv_newmortal();
- char *name;
+ const char *name;
gv_efullname4(tmpsv, fgv, Nullch, FALSE);
- name = SvPV_nolen(tmpsv);
+ name = SvPV_nolen_const(tmpsv);
if (name && *name)
DIE(aTHX_ "Undefined format \"%s\" called", name);
}
@@ -1392,7 +1392,7 @@ PP(pp_leavewrite)
SV * const sv = sv_newmortal();
const char *name;
gv_efullname4(sv, fgv, Nullch, FALSE);
- name = SvPV_nolen(sv);
+ name = SvPV_nolen_const(sv);
if (name && *name)
DIE(aTHX_ "Undefined top format \"%s\" called",name);
}
@@ -1521,7 +1521,7 @@ PP(pp_sysopen)
dSP;
GV *gv;
SV *sv;
- char *tmps;
+ const char *tmps;
STRLEN len;
const int perm = (MAXARG > 3) ? POPi : 0666;
const int mode = POPi;
@@ -1531,8 +1531,9 @@ PP(pp_sysopen)
/* Need TIEHANDLE method ? */
- tmps = SvPV(sv, len);
- if (do_open(gv, tmps, len, TRUE, mode, perm, Nullfp)) {
+ tmps = SvPV_const(sv, len);
+ /* FIXME? do_open should do const */
+ if (do_open(gv, (char*)tmps, len, TRUE, mode, perm, Nullfp)) {
IoLINES(GvIOp(gv)) = 0;
PUSHs(&PL_sv_yes);
}
@@ -3647,9 +3648,8 @@ PP(pp_rename)
dSP; dTARGET;
int anum;
STRLEN n_a;
-
- char *tmps2 = POPpx;
- char *tmps = SvPV(TOPs, n_a);
+ const char *tmps2 = POPpconstx;
+ const char *tmps = SvPV_nolen_const(TOPs);
TAINT_PROPER("rename");
#ifdef HAS_RENAME
anum = PerlLIO_rename(tmps, tmps2);
@@ -3674,8 +3674,8 @@ PP(pp_link)
#ifdef HAS_LINK
dSP; dTARGET;
STRLEN n_a;
- char *tmps2 = POPpx;
- char *tmps = SvPV(TOPs, n_a);
+ const char *tmps2 = POPpconstx;
+ const char *tmps = SvPV_nolen_const(TOPs);
TAINT_PROPER("link");
SETi( PerlLIO_link(tmps, tmps2) >= 0 );
RETURN;
diff --git a/sv.c b/sv.c
index 3f2f953208..e9fe2c9024 100644
--- a/sv.c
+++ b/sv.c
@@ -2248,8 +2248,9 @@ S_not_a_number(pTHX_ SV *sv)
/* each *s can expand to 4 chars + "...\0",
i.e. need room for 8 chars */
- char *s, *end;
- for (s = SvPVX(sv), end = s + SvCUR(sv); s < end && d < limit; s++) {
+ const char *s, *end;
+ for (s = SvPVX_const(sv), end = s + SvCUR(sv); s < end && d < limit;
+ s++) {
int ch = *s & 0xFF;
if (ch & 128 && !isPRINT_LC(ch)) {
*d++ = 'M';
@@ -6191,7 +6192,7 @@ Perl_sv_len_utf8(pTHX_ register SV *sv)
else
{
STRLEN len, ulen;
- const U8 *s = (U8*)SvPV(sv, len);
+ const U8 *s = (U8*)SvPV_const(sv, len);
MAGIC *mg = SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_utf8) : 0;
if (mg && mg->mg_len != -1 && (mg->mg_len > 0 || len == 0)) {
diff --git a/toke.c b/toke.c
index f0c1f0425a..ddaa0aa2f1 100644
--- a/toke.c
+++ b/toke.c
@@ -980,7 +980,7 @@ Perl_str_to_version(pTHX_ SV *sv)
NV retval = 0.0;
NV nshift = 1.0;
STRLEN len;
- const char *start = SvPVx(sv,len);
+ const char *start = SvPVx_const(sv,len);
const char *end = start + len;
const bool utf = SvUTF8(sv) ? TRUE : FALSE;
while (start < end) {
diff --git a/universal.c b/universal.c
index 6c118b7845..eb4f53183e 100644
--- a/universal.c
+++ b/universal.c
@@ -268,7 +268,7 @@ XS(XS_UNIVERSAL_isa)
|| (SvGMAGICAL(sv) && SvPOKp(sv) && SvCUR(sv))))
XSRETURN_UNDEF;
- name = (const char *)SvPV(ST(1),n_a);
+ name = SvPV_const(ST(1),n_a);
ST(0) = boolSV(sv_derived_from(sv, name));
XSRETURN(1);
@@ -295,7 +295,7 @@ XS(XS_UNIVERSAL_can)
|| (SvGMAGICAL(sv) && SvPOKp(sv) && SvCUR(sv))))
XSRETURN_UNDEF;
- name = (const char *)SvPV(ST(1),n_a);
+ name = SvPV_const(ST(1),n_a);
rv = &PL_sv_undef;
if (SvROK(sv)) {
@@ -642,7 +642,7 @@ XS(XS_utf8_valid)
SV * sv = ST(0);
{
STRLEN len;
- const char *s = SvPV(sv,len);
+ const char *s = SvPV_const(sv,len);
if (!SvUTF8(sv) || is_utf8_string((const U8*)s,len))
XSRETURN_YES;
else
@@ -810,7 +810,7 @@ XS(XS_PerlIO_get_layers)
SV **varp = svp;
SV **valp = svp + 1;
STRLEN klen;
- const char *key = SvPV(*varp, klen);
+ const char *key = SvPV_const(*varp, klen);
switch (*key) {
case 'i':
diff --git a/util.c b/util.c
index cd9ab4cd9a..ae831e4f8a 100644
--- a/util.c
+++ b/util.c
@@ -839,7 +839,7 @@ char *
Perl_savesvpv(pTHX_ SV *sv)
{
STRLEN len;
- const char *pv = SvPV(sv, len);
+ const char *pv = SvPV_const(sv, len);
register char *newaddr;
++len;