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
> [email protected]
> http://www.rrette.com/mailman/listinfo/curlpp

_______________________________________________
cURLpp mailing list
[email protected]
http://www.rrette.com/mailman/listinfo/curlpp

Reply via email to