diff options
-rw-r--r-- | lib/ftp.c | 17 |
1 files changed, 7 insertions, 10 deletions
@@ -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); |