diff options
author | Yves Orton <demerphq@gmail.com> | 2016-10-19 11:14:26 +0200 |
---|---|---|
committer | Yves Orton <demerphq@gmail.com> | 2016-10-19 13:28:01 +0200 |
commit | 500f3e18b91e55a2f60dfce9c896bac7c42c7e12 (patch) | |
tree | e96ff96cb483ae6b86b8fde2d49262f81bda7829 /pp.c | |
parent | cad211cc730aa79357eb00584d9fffa239e49d2e (diff) | |
download | perl-500f3e18b91e55a2f60dfce9c896bac7c42c7e12.tar.gz |
pp.c: use new SvPVCLEAR and constant string friendly macros
Diffstat (limited to 'pp.c')
-rw-r--r-- | pp.c | 27 |
1 files changed, 13 insertions, 14 deletions
@@ -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); } |