On 10-Feb-08, at 3:42 PM, Piotr Niemcunowicz wrote:
> Hello again,
>
> this time I`m bugging you for something else ;)
>
> I`ve been using Multi interface for some time and under some
> strange circumstances it threw an exception in destructor.
>
> I found that it can happen when curl returns error, becouse remove
> () method is used in destructor and I don`t see any try/catch.
>
> There is some bug in curl itself - sometimes it does return error
> when it isn`t supposed to. Valgrind shows ugly memory abuse inside
> libcurl.so, so in time I`ll report a bug to curl devteam.
>
> See attached patch.
>
I applied both patches in the repository. BTW, I didn't advertized it
yet,
but there's a mercurial repository available here:
rrette.com/mercurial
so, by doing:
hg clone http://rrette.com/mercurial
you'll have the latest version.
> --
> Best regards,
> Piotr Niemcunowicz
>
> --- ../original/curlpp/Multi.cpp 2007-01-14 01:43:26.000000000 +0100
> +++ curlpp/Multi.cpp 2008-02-10 21:00:12.000000000 +0100
> @@ -38,7 +38,9 @@
> {
> // remove all the remaining easy handles
> while (!mHandles.empty()) {
> - remove (mHandles.begin()->second);
> + std::map< CURL *, const cURLpp::Easy *>::iterator handle =
> mHandles.begin();
> + curl_multi_remove_handle(mMultiHandle, handle->second-
> >getHandle());
> + mHandles.erase(handle);
> }
> curl_multi_cleanup(mMultiHandle);
> }
> _______________________________________________
> cURLpp mailing list
> cURLpp_at_rrette.com
> http://www.rrette.com/mailman/listinfo/curlpp
_______________________________________________
cURLpp mailing list
cURLpp_at_rrette.com
http://www.rrette.com/mailman/listinfo/curlpp
Received on 2008-02-10