Remove some strlen()s and replace one strlcpy() with memcpy() because
Nicholas Clark [Fri, 12 Oct 2007 15:21:14 +0000 (15:21 +0000)]
we already know the string length.

p4raw-id: //depot/perl@32105

doio.c
dump.c
mro.c
op.c

diff --git a/doio.c b/doio.c
index 65adf91..8d7c812 100644 (file)
--- a/doio.c
+++ b/doio.c
@@ -1439,7 +1439,7 @@ Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report)
     const Size_t cmdlen = strlen(incmd) + 1;
     Newx(buf, cmdlen, char);
     cmd = buf;
-    my_strlcpy(cmd, incmd, cmdlen);
+    memcpy(cmd, incmd, cmdlen);
 
     while (*cmd && isSPACE(*cmd))
        cmd++;
diff --git a/dump.c b/dump.c
index aa1228b..2a3439a 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -2451,10 +2451,9 @@ Perl_do_pmop_xmldump(pTHX_ I32 level, PerlIO *file, const PMOP *pm)
     Perl_xmldump_indent(aTHX_ level, file, "<pmop \n");
     level++;
     if (PM_GETRE(pm)) {
-       const char * const s = PM_GETRE(pm)->precomp;
-       SV * const tmpsv = newSVpvn("",0);
+       const regexp *const r = PM_GETRE(pm);
+       SV * const tmpsv = newSVpvn(r->precomp,r->prelen);
        SvUTF8_on(tmpsv);
-       sv_catxmlpvn(tmpsv, s, strlen(s), 1);
        Perl_xmldump_indent(aTHX_ level, file, "pre=\"%s\"\n",
             SvPVX(tmpsv));
        SvREFCNT_dec(tmpsv);
diff --git a/mro.c b/mro.c
index 37a0e96..87c102e 100644 (file)
--- a/mro.c
+++ b/mro.c
@@ -840,8 +840,7 @@ XS(XS_mro_is_universal)
 
     classname = ST(0);
 
-    classname_pv = SvPV_nolen(classname);
-    classname_len = strlen(classname_pv);
+    classname_pv = SvPV(classname,classname_len);
 
     he = hv_fetch_ent(PL_isarev, classname, 0, 0);
     isarev = he ? (HV*)HeVAL(he) : NULL;
diff --git a/op.c b/op.c
index 15510b2..3b40d3e 100644 (file)
--- a/op.c
+++ b/op.c
@@ -7218,6 +7218,8 @@ Perl_ck_require(pTHX_ OP *o)
            SV * const sv = kid->op_sv;
            U32 was_readonly = SvREADONLY(sv);
            char *s;
+           STRLEN len;
+           const char *end;
 
            if (was_readonly) {
                if (SvFAKE(sv)) {
@@ -7229,14 +7231,17 @@ Perl_ck_require(pTHX_ OP *o)
                }
            }   
 
-           for (s = SvPVX(sv); *s; s++) {
+           s = SvPVX(sv);
+           len = SvCUR(sv);
+           end = s + len;
+           for (; s < end; s++) {
                if (*s == ':' && s[1] == ':') {
-                   const STRLEN len = strlen(s+2)+1;
                    *s = '/';
-                   Move(s+2, s+1, len, char);
-                   SvCUR_set(sv, SvCUR(sv) - 1);
+                   Move(s+2, s+1, end - s, char);
+                   --end;
                }
            }
+           SvEND_set(sv, end);
            sv_catpvs(sv, ".pm");
            SvFLAGS(sv) |= was_readonly;
        }