By grabbing the length, we can use sv_setpvn here.
[p5sagit/p5-mst-13.2.git] / util.c
diff --git a/util.c b/util.c
index 8e37c0c..4da13d4 100644 (file)
--- a/util.c
+++ b/util.c
@@ -765,7 +765,7 @@ Perl_savepv(pTHX_ const char *pv)
        char *newaddr;
        const STRLEN pvlen = strlen(pv)+1;
        New(902,newaddr,pvlen,char);
-       return strcpy(newaddr,pv);
+       return memcpy(newaddr,pv,pvlen);
     }
 
 }
@@ -812,16 +812,18 @@ char *
 Perl_savesharedpv(pTHX_ const char *pv)
 {
     register char *newaddr;
+    STRLEN pvlen;
     if (!pv)
        return Nullch;
 
-    newaddr = (char*)PerlMemShared_malloc(strlen(pv)+1);
+    pvlen = strlen(pv)+1;
+    newaddr = (char*)PerlMemShared_malloc(pvlen);
     if (!newaddr) {
        PerlLIO_write(PerlIO_fileno(Perl_error_log),
                      PL_no_mem, strlen(PL_no_mem));
        my_exit(1);
     }
-    return strcpy(newaddr,pv);
+    return memcpy(newaddr,pv,pvlen);
 }
 
 /*
@@ -2840,6 +2842,7 @@ Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char **searc
                len = strlen(scriptname);
                if (len+MAX_EXT_LEN+1 >= sizeof(tmpbuf))
                    break;
+               /* FIXME? Convert to memcpy  */
                cur = strcpy(tmpbuf, scriptname);
            }
        } while (extidx >= 0 && ext[extidx]     /* try an extension? */
@@ -2894,15 +2897,17 @@ Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char **searc
                tmpbuf[len++] = ':';
 #else
            if (len
-#if defined(atarist) || defined(__MINT__) || defined(DOSISH)
+#  if defined(atarist) || defined(__MINT__) || defined(DOSISH)
                && tmpbuf[len - 1] != '/'
                && tmpbuf[len - 1] != '\\'
-#endif
+#  endif
               )
                tmpbuf[len++] = '/';
            if (len == 2 && tmpbuf[0] == '.')
                seen_dot = 1;
 #endif
+           /* FIXME? Convert to memcpy by storing previous strlen(scriptname)
+            */
            (void)strcpy(tmpbuf + len, scriptname);
 #endif  /* !VMS */
 
@@ -4027,8 +4032,9 @@ Perl_new_version(pTHX_ SV *ver)
     if ( SvVOK(ver) ) { /* already a v-string */
        char *version;
        MAGIC* mg = mg_find(ver,PERL_MAGIC_vstring);
-       version = savepvn( (const char*)mg->mg_ptr,mg->mg_len );
-       sv_setpv(rv,version);
+       const STRLEN len = mg->mg_len;
+       version = savepvn( (const char*)mg->mg_ptr, len);
+       sv_setpvn(rv,version,len);
        Safefree(version);
     }
     else {