]> granicus.if.org Git - curl/commitdiff
multi: clarify condition in curl_multi_wait
authorAlan Jenkins <alan.christopher.jenkins@gmail.com>
Sat, 22 Apr 2017 20:16:44 +0000 (21:16 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 22 Apr 2017 20:35:46 +0000 (22:35 +0200)
`if(nfds || extra_nfds) {` is followed by `malloc(nfds * ...)`.

If `extra_fs` could be non-zero when `nfds` was zero, then we have
`malloc(0)` which is allowed to return `NULL`. But, malloc returning
NULL can be confusing. In this code, the next line would treat the NULL
as an allocation failure.

It turns out, if `nfds` is zero then `extra_nfds` must also be zero.
The final value of `nfds` includes `extra_nfds`.  So the test for
`extra_nfds` is redundant.  It can only confuse the reader.

Closes #1439

lib/multi.c

index f167760332aba90a580d6f054fe1e32857b7955d..26d5f1bd61047d7fc5bf8632521a63c5244d2579 100644 (file)
@@ -1014,7 +1014,7 @@ CURLMcode curl_multi_wait(struct Curl_multi *multi,
   curlfds = nfds; /* number of internal file descriptors */
   nfds += extra_nfds; /* add the externally provided ones */
 
-  if(nfds || extra_nfds) {
+  if(nfds) {
     if(nfds > NUM_POLLS_ON_STACK) {
       ufds = malloc(nfds * sizeof(struct pollfd));
       if(!ufds)