]> granicus.if.org Git - curl/commitdiff
fix compiler warning
authorYang Tse <yangsita@gmail.com>
Fri, 12 Jun 2009 02:41:16 +0000 (02:41 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 12 Jun 2009 02:41:16 +0000 (02:41 +0000)
lib/easy.c
lib/multi.c
lib/url.c
tests/server/sockfilt.c

index 7701ce8e5fb35853d0a189c81d5c0751f931aad9..70aa5a0974909efd9a4fbac832da16c249f7b025 100644 (file)
@@ -544,7 +544,7 @@ CURLcode curl_easy_perform(CURL *curl)
 
   if(!data->state.connc) {
     /* oops, no connection cache, make one up */
-    data->state.connc = Curl_mk_connc(CONNCACHE_PRIVATE, -1);
+    data->state.connc = Curl_mk_connc(CONNCACHE_PRIVATE, -1L);
     if(!data->state.connc)
       return CURLE_OUT_OF_MEMORY;
   }
index 25c8b9a9ccd7bf7f860c7496bcb31090ae03c69c..2c5b6d94db9ba1aa2f249cb5731a8af490501c36 100644 (file)
@@ -382,7 +382,7 @@ CURLM *curl_multi_init(void)
     return NULL;
   }
 
-  multi->connc = Curl_mk_connc(CONNCACHE_MULTI, -1);
+  multi->connc = Curl_mk_connc(CONNCACHE_MULTI, -1L);
   if(!multi->connc) {
     Curl_hash_destroy(multi->sockhash);
     Curl_hash_destroy(multi->hostcache);
index 1ef52e8ecdae4cc118a150d4e1c34373c6a880ed..840eefeb7a9c3b429298f5d6dbb373322f94e316 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -531,22 +531,23 @@ struct conncache *Curl_mk_connc(int type,
 
   struct conncache *c;
   long default_amount;
+  long max_amount = (long)(((size_t)INT_MAX) / sizeof(struct connectdata *));
 
   if(type == CONNCACHE_PRIVATE) {
-    default_amount = (amount < 0) ? 5 : amount;
+    default_amount = (amount < 1L) ? 5L : amount;
   }
   else {
-    default_amount = (amount < 0) ? 10 : amount;
+    default_amount = (amount < 1L) ? 10L : amount;
   }
 
-  c= calloc(sizeof(struct conncache), 1);
+  if(default_amount > max_amount)
+    default_amount = max_amount;
+
+  c = calloc(1, sizeof(struct conncache));
   if(!c)
     return NULL;
 
-  if((size_t)(default_amount) > ((size_t)-1) / sizeof(struct connectdata *))
-    default_amount = ((size_t)-1) / sizeof(struct connectdata *);
-
-  c->connects = calloc(sizeof(struct connectdata *), (size_t)default_amount);
+  c->connects = calloc((size_t)default_amount, sizeof(struct connectdata *));
   if(!c->connects) {
     free(c);
     return NULL;
@@ -564,6 +565,7 @@ CURLcode Curl_ch_connc(struct SessionHandle *data,
 {
   long i;
   struct connectdata **newptr;
+  long max_amount = (long)(((size_t)INT_MAX) / sizeof(struct connectdata *));
 
   if(newamount < 1)
     newamount = 1; /* we better have at least one entry */
@@ -596,6 +598,8 @@ CURLcode Curl_ch_connc(struct SessionHandle *data,
       data->state.lastconnect = -1;
   }
   if(newamount > 0) {
+    if(newamount > max_amount)
+      newamount = max_amount;
     newptr = realloc(c->connects, sizeof(struct connectdata *) * newamount);
     if(!newptr)
       /* we closed a few connections in vain, but so what? */
index 0e01035c57d7277e0ac6352aa27f42b5ebbb7258..d01a2d1fecb90b19c7bdb2f6b42f4d34b65b6ad0 100644 (file)
@@ -453,7 +453,17 @@ static bool juggle(curl_socket_t *sockfdp,
   FD_ZERO(&fds_write);
   FD_ZERO(&fds_err);
 
+#ifdef USE_WINSOCK
+  /*
+  ** WinSock select() does not support standard file descriptors,
+  ** it can only check SOCKETs. Since this program in its current
+  ** state will not work on WinSock based systems, next line is
+  ** commented out to allow warning-free compilation awaiting the
+  ** day it will be fixed to also run on WinSock systems.
+  */
+#else
   FD_SET(fileno(stdin), &fds_read);
+#endif
 
   switch(*mode) {