As a side note, I tryed the same code with a dll build of libcurl, and got no problem, everything works fine. So I'm going the dll way, even if I prefer static linking for this kind of library (smaller resulting file and less file to redistribute).
Thanks. 2011/1/12 Jean-François VERDON <[email protected]> > Thanks for your response. > > 2011/1/12 Daniel Stenberg <[email protected]> > > On Wed, 12 Jan 2011, Jean-François VERDON wrote: >> >> I may found a bug in libCurl, when builded statically on Windows (7). >>> I've got an error on the curl_easy_cleanup function, more precisely at >>> the >>> line 2554 of "url.c" file: >>> >> >> Curl_safefree(conn->user); >>>>> >>>> >> What error did you get on that line? Did you check what 'user' pointed to? > > I got a exception in _CrtIsValidHeapPointer, so I checked c/c++ run-time > library. They are both (curl static lib and my dll) set to /MDd. Some other > options are different (floating point mode, etc), but I don't think this > matters. > > >> >> Searching deeper, i found that if not supplied, user and password are >>> setted >>> to empties string (conn->user and conn->passwd). >>> >> >> No, that's not correct. See lib/url.c:set_userpass() and you'll see that >> it always strdups() or NULLs them. > > Missed that point, ok. > >> >> >> But, the pointers are setted to "create_conn(struct SessionHandle *data, >>> struct connectdata **in_connect, bool *async)" internal variables at line >>> 1888 (set_userpass call): >>> 4653 >> char user[MAX_CURL_USER_LENGTH]; >>> 4654 >> char passwd[MAX_CURL_PASSWORD_LENGTH]; >>> >>> Those 2 variable are static functions local variable >>> >> >> No, they're not static. Yes they are local buffers to hold temporary >> strings. >> >> >> a call to "free(ptr)" as done in "Curl_safefree(void *ptr)" (line 271) >>> seems invalid in this case, no? >>> >> >> Not at all, since the free() is not done on the local buffers > > Ha, I see, I was wrong, cause (of course) conn->user point to strdups() > allocated memory after set_userpass(), stupid me, not the same pointers... > > >> You're pointing out generic code that is used for all platforms and we >> have >> >>> 500 test cases that run fine. I'm not saying you haven't found a bug, I'm >>> >>> >> just suggesting that if it is a libcurl bug it is slightly more >> complicated than just this. >> >> Or I'm hallucating. It would help us a lot if you provided us with a >> complete example that repeats the problem. > > Got to check elsewhere so... > >> -- >> >> / daniel.haxx.se >> ------------------------------------------------------------------- >> List admin: http://cool.haxx.se/list/listinfo/curl-library >> Etiquette: http://curl.haxx.se/mail/etiquette.html >> > >
------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.html
