diff options
author | Yang Tse <yangsita@gmail.com> | 2009-06-12 02:41:16 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2009-06-12 02:41:16 +0000 |
commit | 4ea513cc387c0a67c861a87aea01e6d1cac4854c (patch) | |
tree | bd32a99caf08d3945f215cd0a0e179b8a2f3d881 /lib/url.c | |
parent | 3ca0b9bb47f015c0de7379da46d10948e0637302 (diff) |
fix compiler warning
Diffstat (limited to 'lib/url.c')
-rw-r--r-- | lib/url.c | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -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? */ |