This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
cad211c
)
pp.c: use new SvPVCLEAR and constant string friendly macros
author
Yves Orton
<demerphq@gmail.com>
Wed, 19 Oct 2016 09:14:26 +0000
(11:14 +0200)
committer
Yves Orton
<demerphq@gmail.com>
Wed, 19 Oct 2016 11:28:01 +0000
(13:28 +0200)
pp.c
patch
|
blob
|
blame
|
history
diff --git
a/pp.c
b/pp.c
index
00a577e
..
ebb17d1
100644
(file)
--- a/
pp.c
+++ b/
pp.c
@@
-658,10
+658,9
@@
PP(pp_gelem)
sv = NULL;
if (elem) {
/* elem will always be NUL terminated. */
sv = NULL;
if (elem) {
/* elem will always be NUL terminated. */
- const char * const second_letter = elem + 1;
switch (*elem) {
case 'A':
switch (*elem) {
case 'A':
- if (
len == 5 && strEQ(second_letter, "
RRAY"))
+ if (
memEQs(elem, len, "A
RRAY"))
{
tmpRef = MUTABLE_SV(GvAV(gv));
if (tmpRef && !AvREAL((const AV *)tmpRef)
{
tmpRef = MUTABLE_SV(GvAV(gv));
if (tmpRef && !AvREAL((const AV *)tmpRef)
@@
-670,42
+669,42
@@
PP(pp_gelem)
}
break;
case 'C':
}
break;
case 'C':
- if (
len == 4 && strEQ(second_letter, "
ODE"))
+ if (
memEQs(elem, len, "C
ODE"))
tmpRef = MUTABLE_SV(GvCVu(gv));
break;
case 'F':
tmpRef = MUTABLE_SV(GvCVu(gv));
break;
case 'F':
- if (
len == 10 && strEQ(second_letter, "
ILEHANDLE")) {
+ if (
memEQs(elem, len, "F
ILEHANDLE")) {
tmpRef = MUTABLE_SV(GvIOp(gv));
}
else
tmpRef = MUTABLE_SV(GvIOp(gv));
}
else
- if (
len == 6 && strEQ(second_letter, "
ORMAT"))
+ if (
memEQs(elem, len, "F
ORMAT"))
tmpRef = MUTABLE_SV(GvFORM(gv));
break;
case 'G':
tmpRef = MUTABLE_SV(GvFORM(gv));
break;
case 'G':
- if (
len == 4 && strEQ(second_letter, "
LOB"))
+ if (
memEQs(elem, len, "G
LOB"))
tmpRef = MUTABLE_SV(gv);
break;
case 'H':
tmpRef = MUTABLE_SV(gv);
break;
case 'H':
- if (
len == 4 && strEQ(second_letter, "
ASH"))
+ if (
memEQs(elem, len, "H
ASH"))
tmpRef = MUTABLE_SV(GvHV(gv));
break;
case 'I':
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':
tmpRef = MUTABLE_SV(GvIOp(gv));
break;
case 'N':
- if (
len == 4 && strEQ(second_letter, "
AME"))
+ if (
memEQs(elem, len, "N
AME"))
sv = newSVhek(GvNAME_HEK(gv));
break;
case 'P':
sv = newSVhek(GvNAME_HEK(gv));
break;
case 'P':
- if (
len == 7 && strEQ(second_letter, "
ACKAGE")) {
+ if (
memEQs(elem, len, "P
ACKAGE")) {
const HV * const stash = GvSTASH(gv);
const HEK * const hek = stash ? HvNAME_HEK(stash) : NULL;
sv = hek ? newSVhek(hek) : newSVpvs("__ANON__");
}
break;
case 'S':
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, "S
CALAR"))
tmpRef = GvSVn(gv);
break;
}
tmpRef = GvSVn(gv);
break;
}
@@
-902,7
+901,7
@@
S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping)
}
}
else
}
}
else
-
sv_setpvs(retval, ""
);
+
SvPVCLEAR(retval
);
}
else if (s && len) {
s += --len;
}
else if (s && len) {
s += --len;
@@
-913,7
+912,7
@@
S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping)
SvNIOK_off(sv);
}
else
SvNIOK_off(sv);
}
else
-
sv_setpvs(retval, ""
);
+
SvPVCLEAR(retval
);
SvSETMAGIC(sv);
}
return count;
SvSETMAGIC(sv);
}
return count;
@@
-3448,7
+3447,7
@@
PP(pp_substr)
repl = SvPV_const(repl_sv_copy, repl_len);
}
if (!SvOK(sv))
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);
}
sv_insert_flags(sv, byte_pos, byte_len, repl, repl_len, 0);
SvREFCNT_dec(repl_sv_copy);
}