]> granicus.if.org Git - curl/commitdiff
avoid an extra malloc
authorDaniel Stenberg <daniel@haxx.se>
Fri, 17 Dec 2004 10:09:32 +0000 (10:09 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 17 Dec 2004 10:09:32 +0000 (10:09 +0000)
lib/ftp.c

index 5016a6a8023fc093c84a0614210d9c964a765781..0aa734e5b64c13858e25609e94ad9267f02ffdc8 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -778,19 +778,16 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status)
   flen = ftp->file?strlen(ftp->file):0; /* file is "raw" already */
   dlen = strlen(path)-flen;
   if(dlen) {
-    ftp->prevpath = malloc(dlen + 1);
-    if(!ftp->prevpath) {
-      free(path);
-      return CURLE_OUT_OF_MEMORY;
-    }
-    memcpy(ftp->prevpath, path, dlen);
-    ftp->prevpath[dlen]=0; /* terminate */
+    ftp->prevpath = path;
+    if(flen)
+      /* if 'path' is not the whole string */
+      ftp->prevpath[dlen]=0; /* terminate */
     infof(data, "Remembering we are in dir %s\n", ftp->prevpath);
   }
-  else
+  else {
     ftp->prevpath = NULL; /* no path */
-  free(path);
-
+    free(path);
+  }
   /* free the dir tree and file parts */
   freedirs(ftp);