Nicholas Clark
2010-10-08 14:40:24 UTC
In perl.git, the branch blead has been updated
<http://perl5.git.perl.org/perl.git/commitdiff/e771aaa95f65a9c44af94b9391ba49f4fcbfda43?hp=4c43faf178da84900d2d5ff3de31d38bf7fab5d3>
- Log -----------------------------------------------------------------
commit e771aaa95f65a9c44af94b9391ba49f4fcbfda43
Author: Nicholas Clark <***@ccl4.org>
Date: Fri Oct 8 15:39:24 2010 +0100
Perl_gv_fetchpvn_flags() can avoid copying when the package separator is ::
-----------------------------------------------------------------------
Summary of changes:
gv.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/gv.c b/gv.c
index db9617f..9e93937 100644
--- a/gv.c
+++ b/gv.c
@@ -1052,16 +1052,17 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
len = name_cursor - name;
if (len > 0) {
- char smallbuf[128];
char *tmpbuf;
- if (len + 2 <= (I32)sizeof (smallbuf))
- tmpbuf = smallbuf;
- else
+ if (name_cursor == ':') {
+ tmpbuf = name;
+ len += 2;
+ } else {
Newx(tmpbuf, len+2, char);
- Copy(name, tmpbuf, len, char);
- tmpbuf[len++] = ':';
- tmpbuf[len++] = ':';
+ Copy(name, tmpbuf, len, char);
+ tmpbuf[len++] = ':';
+ tmpbuf[len++] = ':';
+ }
gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
gv = gvp ? *gvp : NULL;
if (gv && gv != (const GV *)&PL_sv_undef) {
@@ -1070,7 +1071,7 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
else
GvMULTI_on(gv);
}
- if (tmpbuf != smallbuf)
+ if (tmpbuf != name)
Safefree(tmpbuf);
if (!gv || gv == (const GV *)&PL_sv_undef)
return NULL;
--
Perl5 Master Repository
<http://perl5.git.perl.org/perl.git/commitdiff/e771aaa95f65a9c44af94b9391ba49f4fcbfda43?hp=4c43faf178da84900d2d5ff3de31d38bf7fab5d3>
- Log -----------------------------------------------------------------
commit e771aaa95f65a9c44af94b9391ba49f4fcbfda43
Author: Nicholas Clark <***@ccl4.org>
Date: Fri Oct 8 15:39:24 2010 +0100
Perl_gv_fetchpvn_flags() can avoid copying when the package separator is ::
-----------------------------------------------------------------------
Summary of changes:
gv.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/gv.c b/gv.c
index db9617f..9e93937 100644
--- a/gv.c
+++ b/gv.c
@@ -1052,16 +1052,17 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
len = name_cursor - name;
if (len > 0) {
- char smallbuf[128];
char *tmpbuf;
- if (len + 2 <= (I32)sizeof (smallbuf))
- tmpbuf = smallbuf;
- else
+ if (name_cursor == ':') {
+ tmpbuf = name;
+ len += 2;
+ } else {
Newx(tmpbuf, len+2, char);
- Copy(name, tmpbuf, len, char);
- tmpbuf[len++] = ':';
- tmpbuf[len++] = ':';
+ Copy(name, tmpbuf, len, char);
+ tmpbuf[len++] = ':';
+ tmpbuf[len++] = ':';
+ }
gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
gv = gvp ? *gvp : NULL;
if (gv && gv != (const GV *)&PL_sv_undef) {
@@ -1070,7 +1071,7 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
else
GvMULTI_on(gv);
}
- if (tmpbuf != smallbuf)
+ if (tmpbuf != name)
Safefree(tmpbuf);
if (!gv || gv == (const GV *)&PL_sv_undef)
return NULL;
--
Perl5 Master Repository