X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_pack.c;h=b0d3b29dee6898bff1389778ea80974118de39c6;hb=c0e1089ae3d29de8c9817373e1b7f36eaf9a9cd8;hp=9987a7b09f9da06c8e3410a41c367bd1491250ac;hpb=aa07b2f68da542daf881aa4d73a68f7bc8c114b1;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_pack.c b/pp_pack.c index 9987a7b..b0d3b29 100644 --- a/pp_pack.c +++ b/pp_pack.c @@ -2005,8 +2005,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c 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 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c break; } } - t = SvPV(sv, n_a); + t = SvPV_nolen_const(sv); while (*t == '0') t++; sv_chop(sv, t); @@ -2275,8 +2274,8 @@ PP(pp_unpack) I32 gimme = GIMME_V; STRLEN llen; STRLEN rlen; - const char *pat = SvPV(left, llen); - const char *s = SvPV(right, rlen); + const char *pat = SvPV_const(left, llen); + const char *s = SvPV_const(right, rlen); const char *strend = s + rlen; const char *patend = pat + llen; I32 cnt; @@ -2750,7 +2749,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; @@ -2904,14 +2903,14 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist ) } 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; @@ -3514,7 +3513,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist ) /* Fall through! */ case 'p': while (len-- > 0) { - char *aptr; + const char *aptr; fromstr = NEXTFROM; SvGETMAGIC(fromstr); @@ -3533,7 +3532,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist ) "Attempt to pack pointer to temporary value"); } if (SvPOK(fromstr) || SvNIOK(fromstr)) - aptr = SvPV_flags(fromstr, n_a, 0); + aptr = SvPV_nomg_const(fromstr, n_a); else aptr = SvPV_force_flags(fromstr, n_a, 0); } @@ -3553,7 +3552,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist ) "Field too wide in 'u' format in pack"); len = 63; } - aptr = SvPV(fromstr, fromlen); + aptr = SvPV_const(fromstr, fromlen); from_utf8 = DO_UTF8(fromstr); if (from_utf8) { aend = aptr + fromlen; @@ -3603,7 +3602,7 @@ PP(pp_pack) dSP; dMARK; dORIGMARK; dTARGET; register SV *cat = TARG; STRLEN fromlen; - register const char *pat = SvPVx(*++MARK, fromlen); + register const char *pat = SvPVx_const(*++MARK, fromlen); register const char *patend = pat + fromlen; MARK++;