Change 29983 by [EMAIL PROTECTED] on 2007/01/25 22:39:08

        Neither gv_fetchpvn_flags() nor hv_fetch() need a NUL terminated
        string, so don't bother allocating buffer space or adding a NUL.

Affected files ...

... //depot/perl/gv.c#348 edit
... //depot/perl/toke.c#739 edit

Differences ...

==== //depot/perl/gv.c#348 (text) ====
Index: perl/gv.c
--- perl/gv.c#347~29977~        2007-01-25 12:57:56.000000000 -0800
+++ perl/gv.c   2007-01-25 14:39:08.000000000 -0800
@@ -742,14 +742,13 @@
     HV *stash;
     GV *tmpgv;
 
-    if (namelen + 3 < sizeof smallbuf)
+    if (namelen + 2 < sizeof smallbuf)
        tmpbuf = smallbuf;
     else
-       Newx(tmpbuf, namelen + 3, char);
+       Newx(tmpbuf, namelen + 2, char);
     Copy(name,tmpbuf,namelen,char);
     tmpbuf[namelen++] = ':';
     tmpbuf[namelen++] = ':';
-    tmpbuf[namelen] = '\0';
     tmpgv = gv_fetchpvn_flags(tmpbuf, namelen, flags, SVt_PVHV);
     if (tmpbuf != smallbuf)
        Safefree(tmpbuf);
@@ -835,14 +834,13 @@
                char smallbuf[128];
                char *tmpbuf;
 
-               if (len + 3 < (I32)sizeof (smallbuf))
+               if (len + 2 < (I32)sizeof (smallbuf))
                    tmpbuf = smallbuf;
                else
-                   Newx(tmpbuf, len+3, char);
+                   Newx(tmpbuf, len+2, char);
                Copy(name, tmpbuf, len, char);
                tmpbuf[len++] = ':';
                tmpbuf[len++] = ':';
-               tmpbuf[len] = '\0';
                gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
                gv = gvp ? *gvp : NULL;
                if (gv && gv != (GV*)&PL_sv_undef) {

==== //depot/perl/toke.c#739 (text) ====
Index: perl/toke.c
--- perl/toke.c#738~29977~      2007-01-25 12:57:56.000000000 -0800
+++ perl/toke.c 2007-01-25 14:39:08.000000000 -0800
@@ -794,19 +794,19 @@
            char *tmpbuf, *tmpbuf2;
            GV **gvp, *gv2;
            STRLEN tmplen2 = strlen(s);
-           if (tmplen + 3 < sizeof smallbuf)
+           if (tmplen + 2 < sizeof smallbuf)
                tmpbuf = smallbuf;
            else
-               Newx(tmpbuf, tmplen + 3, char);
-           if (tmplen2 + 3 < sizeof smallbuf2)
+               Newx(tmpbuf, tmplen + 2, char);
+           if (tmplen2 + 2 < sizeof smallbuf2)
                tmpbuf2 = smallbuf2;
            else
-               Newx(tmpbuf2, tmplen2 + 3, char);
+               Newx(tmpbuf2, tmplen2 + 2, char);
            tmpbuf[0] = tmpbuf2[0] = '_';
            tmpbuf[1] = tmpbuf2[1] = '<';
-           memcpy(tmpbuf + 2, cf, ++tmplen);
-           memcpy(tmpbuf2 + 2, s, ++tmplen2);
-           ++tmplen; ++tmplen2;
+           memcpy(tmpbuf + 2, cf, tmplen);
+           memcpy(tmpbuf2 + 2, s, tmplen2);
+           tmplen += 2; tmplen2 += 2;
            gvp = (GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, FALSE);
            if (gvp) {
                gv2 = *(GV**)hv_fetch(PL_defstash, tmpbuf2, tmplen2, TRUE);
End of Patch.

Reply via email to