aboutsummaryrefslogtreecommitdiff
path: root/lib/url.c
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2009-06-12 02:41:16 +0000
committerYang Tse <yangsita@gmail.com>2009-06-12 02:41:16 +0000
commit4ea513cc387c0a67c861a87aea01e6d1cac4854c (patch)
treebd32a99caf08d3945f215cd0a0e179b8a2f3d881 /lib/url.c
parent3ca0b9bb47f015c0de7379da46d10948e0637302 (diff)
fix compiler warning
Diffstat (limited to 'lib/url.c')
-rw-r--r--lib/url.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/url.c b/lib/url.c
index 1ef52e8ec..840eefeb7 100644
--- 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? */