curl-library
Re: curl_multi_perform sometimes does not return while its threadus es1 00% cpu resources
Date: Thu, 13 Dec 2018 09:52:06 +0100
Am 13.12.18 um 08:46 schrieb "h9791521_at_docomo.ne.jp" via curl-library:
> Lib\spray.c
> if(compare(i, t->key) < 0) { <====== never become negative
> /* even the smallest is too big */
> *removed = NULL;
> return t;
> }
>
> https://github.com/curl/curl/issues/2004
> The loop happens on systems where time_t is defined to an unsigned type
> (e.g. QNX).
> Differences between unsigned types will never become negative.
I assume that you are referring to lib/splay.c. compare() is a macro
which resolves to another macro Curl_splaycomparekeys() from lib/splay.h:
#define Curl_splaycomparekeys(i,j) ( ((i.tv_sec) < (j.tv_sec)) ? -1 : \
( ((i.tv_sec) > (j.tv_sec)) ? 1 : \
( ((i.tv_usec) < (j.tv_usec)) ? -1 : \
( ((i.tv_usec) > (j.tv_usec)) ? 1 :
0))))
So compare() can indeed return a value less than zero.
-- Stephan ------------------------------------------------------------------- Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.htmlReceived on 2018-12-13