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);  | 
