From 151659f6371ce39a488fd132a5c8ce5e3bba983c Mon Sep 17 00:00:00 2001 From: Ondřej Bílka Date: Fri, 25 Oct 2013 19:16:08 +0200 Subject: Fix gethostbyname_r example. Fixes bug 2801. --- manual/socket.texi | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'manual') diff --git a/manual/socket.texi b/manual/socket.texi index 25c35c46b1..4c7e623b29 100644 --- a/manual/socket.texi +++ b/manual/socket.texi @@ -1307,23 +1307,25 @@ Here's a small example: struct hostent * gethostname (char *host) @{ - struct hostent hostbuf, *hp; + struct hostent *hostbuf, *hp; size_t hstbuflen; char *tmphstbuf; int res; int herr; + hostbuf = malloc (sizeof (struct hostent)); hstbuflen = 1024; - /* Allocate buffer, remember to free it to avoid memory leakage. */ tmphstbuf = malloc (hstbuflen); - while ((res = gethostbyname_r (host, &hostbuf, tmphstbuf, hstbuflen, + while ((res = gethostbyname_r (host, hostbuf, tmphstbuf, hstbuflen, &hp, &herr)) == ERANGE) @{ /* Enlarge the buffer. */ hstbuflen *= 2; tmphstbuf = realloc (tmphstbuf, hstbuflen); @} + + free (tmphstbuf); /* Check for errors. */ if (res || hp == NULL) return NULL; -- cgit 1.4.1