In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/3a5b580ccfc4c8c7d52ecd8ccd1431eb99a05a0f?hp=8a280620fcbbc5f0c47b80ca2dc5d3eb208012ae>

- Log -----------------------------------------------------------------
commit 3a5b580ccfc4c8c7d52ecd8ccd1431eb99a05a0f
Author: Nicholas Clark <[email protected]>
Date:   Fri Oct 8 19:58:34 2010 +0100

    Fix bugs in e771aaa95f65a9c4 (reducing copying in gv_fetchpvn_flags)
    
    Bug spotting and 1 fix by Jerry D. Hedden.
-----------------------------------------------------------------------

Summary of changes:
 gv.c |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/gv.c b/gv.c
index 9e93937..1ed129e 100644
--- a/gv.c
+++ b/gv.c
@@ -1052,27 +1052,28 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN 
full_len, I32 flags,
 
            len = name_cursor - name;
            if (len > 0) {
-               char *tmpbuf;
-
-               if (name_cursor == ':') {
-                   tmpbuf = name;
+               const char *key;
+               if (*name_cursor == ':') {
+                   key = name;
                    len += 2;
                } else {
+                   char *tmpbuf;
                    Newx(tmpbuf, len+2, char);
                    Copy(name, tmpbuf, len, char);
                    tmpbuf[len++] = ':';
                    tmpbuf[len++] = ':';
+                   key = tmpbuf;
                }
-               gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
+               gvp = (GV**)hv_fetch(stash, key, len, add);
                gv = gvp ? *gvp : NULL;
                if (gv && gv != (const GV *)&PL_sv_undef) {
                    if (SvTYPE(gv) != SVt_PVGV)
-                       gv_init(gv, stash, tmpbuf, len, (add & GV_ADDMULTI));
+                       gv_init(gv, stash, key, len, (add & GV_ADDMULTI));
                    else
                        GvMULTI_on(gv);
                }
-               if (tmpbuf != name)
-                   Safefree(tmpbuf);
+               if (key != name)
+                   Safefree((char *)key);
                if (!gv || gv == (const GV *)&PL_sv_undef)
                    return NULL;
 

--
Perl5 Master Repository

Reply via email to