]> granicus.if.org Git - curl/commitdiff
Gisle fixed a bad free from the resolve reorg, I changed type of the buf
authorDaniel Stenberg <daniel@haxx.se>
Tue, 29 Jun 2004 18:44:59 +0000 (18:44 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 29 Jun 2004 18:44:59 +0000 (18:44 +0000)
variable to sort out some compiler warnings.

lib/hostip4.c

index 76f75181e8534e07983924b8ba1e427bea4fb8d9..f380d3ef8ee5b60f67ff8020cb1591b780592315 100644 (file)
@@ -196,6 +196,8 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
   struct hostent *h = NULL;
   in_addr_t in;
   struct SessionHandle *data = conn->data;
+  struct hostent *buf = NULL;
+
   (void)port; /* unused in IPv4 code */
 
   *waitp = 0; /* don't wait, we act synchronously */
@@ -215,7 +217,8 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
   else {
     int h_errnop;
     int res=ERANGE;
-    int *buf = (int *)calloc(CURL_HOSTENT_SIZE, 1);
+
+    buf = (struct hostent *)calloc(CURL_HOSTENT_SIZE, 1);
     if(!buf)
       return NULL; /* major failure */
     /*
@@ -326,7 +329,7 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
 
     if(!res) { /* success */
 
-      h = (struct hostent*)buf; /* result expected in h */
+      h = buf; /* result expected in h */
 
       /* This is the worst kind of the different gethostbyname_r() interfaces.
        * Since we don't know how big buffer this particular lookup required,
@@ -359,7 +362,8 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
   if(h) {
     ai = Curl_he2ai(h, port);
 
-    free(h);
+    if (h == buf) /* used a *_r() function */
+      free(h);
   }
 
   return ai;