Index: url.c =================================================================== RCS file: /cvsroot/curl/lib/url.c,v retrieving revision 1.121 diff -u -r1.121 url.c --- url.c 2001/05/04 07:47:11 1.121 +++ url.c 2001/05/11 06:35:36 @@ -2019,21 +2019,26 @@ */ struct connectdata *old_conn = conn; char *path = old_conn->path; /* setup the current path pointer properly */ + char *ppath = old_conn->ppath; /* this is the modified path pointer */ if(old_conn->proxyhost) free(old_conn->proxyhost); conn = conn_temp; /* use this connection from now on */ - free(conn->path); /* free the previous path pointer */ /* we need these pointers if we speak over a proxy */ conn->name = conn->gname; conn->hostname = old_conn->gname; - conn->path = path; /* use this one */ - conn->ppath = path; /* set this too */ + free(conn->path); /* free the previously allocated path pointer */ + /* 'path' points to the allocated data, 'ppath' may have been advanced + to point somewhere within the 'path' area. */ + conn->path = path; + conn->ppath = ppath; + /* re-use init */ conn->bits.reuse = TRUE; /* yes, we're re-using here */ - conn->bits.chunk = FALSE; /* always assume not chunked unless told otherwise */ + conn->bits.chunk = FALSE; /* always assume not chunked unless told + otherwise */ conn->maxdownload = -1; /* might have been used previously! */ free(old_conn); /* we don't need this anymore */