From: Yves Orton Date: Wed, 19 Oct 2016 09:14:26 +0000 (+0200) Subject: pp.c: use new SvPVCLEAR and constant string friendly macros X-Git-Tag: v5.25.6~42 X-Git-Url: https://perl5.git.perl.org/perl5.git/commitdiff_plain/500f3e18b91e55a2f60dfce9c896bac7c42c7e12 pp.c: use new SvPVCLEAR and constant string friendly macros --- diff --git a/pp.c b/pp.c index 00a577e..ebb17d1 100644 --- a/pp.c +++ b/pp.c @@ -658,10 +658,9 @@ PP(pp_gelem) sv = NULL; if (elem) { /* elem will always be NUL terminated. */ - const char * const second_letter = elem + 1; switch (*elem) { case 'A': - if (len == 5 && strEQ(second_letter, "RRAY")) + if (memEQs(elem, len, "ARRAY")) { tmpRef = MUTABLE_SV(GvAV(gv)); if (tmpRef && !AvREAL((const AV *)tmpRef) @@ -670,42 +669,42 @@ PP(pp_gelem) } break; case 'C': - if (len == 4 && strEQ(second_letter, "ODE")) + if (memEQs(elem, len, "CODE")) tmpRef = MUTABLE_SV(GvCVu(gv)); break; case 'F': - if (len == 10 && strEQ(second_letter, "ILEHANDLE")) { + if (memEQs(elem, len, "FILEHANDLE")) { tmpRef = MUTABLE_SV(GvIOp(gv)); } else - if (len == 6 && strEQ(second_letter, "ORMAT")) + if (memEQs(elem, len, "FORMAT")) tmpRef = MUTABLE_SV(GvFORM(gv)); break; case 'G': - if (len == 4 && strEQ(second_letter, "LOB")) + if (memEQs(elem, len, "GLOB")) tmpRef = MUTABLE_SV(gv); break; case 'H': - if (len == 4 && strEQ(second_letter, "ASH")) + if (memEQs(elem, len, "HASH")) tmpRef = MUTABLE_SV(GvHV(gv)); break; case 'I': - if (*second_letter == 'O' && !elem[2] && len == 2) + if (memEQs(elem, len, "IO")) tmpRef = MUTABLE_SV(GvIOp(gv)); break; case 'N': - if (len == 4 && strEQ(second_letter, "AME")) + if (memEQs(elem, len, "NAME")) sv = newSVhek(GvNAME_HEK(gv)); break; case 'P': - if (len == 7 && strEQ(second_letter, "ACKAGE")) { + if (memEQs(elem, len, "PACKAGE")) { const HV * const stash = GvSTASH(gv); const HEK * const hek = stash ? HvNAME_HEK(stash) : NULL; sv = hek ? newSVhek(hek) : newSVpvs("__ANON__"); } break; case 'S': - if (len == 6 && strEQ(second_letter, "CALAR")) + if (memEQs(elem, len, "SCALAR")) tmpRef = GvSVn(gv); break; } @@ -902,7 +901,7 @@ S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping) } } else - sv_setpvs(retval, ""); + SvPVCLEAR(retval); } else if (s && len) { s += --len; @@ -913,7 +912,7 @@ S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping) SvNIOK_off(sv); } else - sv_setpvs(retval, ""); + SvPVCLEAR(retval); SvSETMAGIC(sv); } return count; @@ -3448,7 +3447,7 @@ PP(pp_substr) repl = SvPV_const(repl_sv_copy, repl_len); } if (!SvOK(sv)) - sv_setpvs(sv, ""); + SvPVCLEAR(sv); sv_insert_flags(sv, byte_pos, byte_len, repl, repl_len, 0); SvREFCNT_dec(repl_sv_copy); }