diff options
Diffstat (limited to 'libc/inet/resolv.c')
-rw-r--r-- | libc/inet/resolv.c | 50 |
1 files changed, 16 insertions, 34 deletions
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c index 033e3e1e8..1f12be9b9 100644 --- a/libc/inet/resolv.c +++ b/libc/inet/resolv.c @@ -146,7 +146,6 @@ #include <netinet/in.h> #include <arpa/inet.h> #include <stdlib.h> -#include <malloc.h> #include <unistd.h> #include <resolv.h> #include <netdb.h> @@ -219,7 +218,6 @@ libc_hidden_proto(__ctype_b_loc) #elif defined __UCLIBC_HAS_CTYPE_TABLES__ libc_hidden_proto(__ctype_b) #endif -libc_hidden_proto(__uc_malloc) int __libc_getdomainname(char *name, size_t len); libc_hidden_proto(__libc_getdomainname) @@ -1150,17 +1148,13 @@ void attribute_hidden __close_nameservers(void) struct hostent *gethostbyname(const char *name) { - static struct { - struct hostent h; - char buf[sizeof(struct in_addr) + - sizeof(struct in_addr *)*2 + - sizeof(char *)*ALIAS_DIM + 384/*namebuffer*/ + 32/* margin */]; - } *sp; + static struct hostent h; + static char buf[sizeof(struct in_addr) + + sizeof(struct in_addr *)*2 + + sizeof(char *)*ALIAS_DIM + 384/*namebuffer*/ + 32/* margin */]; struct hostent *hp; - free(sp); - sp = __uc_malloc(sizeof(*sp)); - gethostbyname_r(name, &sp->h, sp->buf, sizeof(sp->buf), &hp, &h_errno); + gethostbyname_r(name, &h, buf, sizeof(buf), &hp, &h_errno); return hp; } @@ -1174,17 +1168,13 @@ struct hostent *gethostbyname2(const char *name, int family) #ifndef __UCLIBC_HAS_IPV6__ return family == AF_INET ? gethostbyname(name) : (struct hostent*)0; #else /* __UCLIBC_HAS_IPV6__ */ - static struct { - struct hostent h; - char buf[sizeof(struct in6_addr) + - sizeof(struct in6_addr *)*2 + - sizeof(char *)*ALIAS_DIM + 384/*namebuffer*/ + 32/* margin */]; - } *sp; + static struct hostent h; + static char buf[sizeof(struct in6_addr) + + sizeof(struct in6_addr *)*2 + + sizeof(char *)*ALIAS_DIM + 384/*namebuffer*/ + 32/* margin */]; struct hostent *hp; - free(sp); - sp = __uc_malloc(sizeof(*sp)); - gethostbyname2_r(name, family, &sp->h, sp->buf, sizeof(sp->buf), &hp, &h_errno); + gethostbyname2_r(name, family, &h, buf, sizeof(buf), &hp, &h_errno); return hp; #endif /* __UCLIBC_HAS_IPV6__ */ @@ -1521,21 +1511,17 @@ libc_hidden_def(res_querydomain) #ifdef L_gethostbyaddr struct hostent *gethostbyaddr (const void *addr, socklen_t len, int type) { - static struct { - struct hostent h; - char buf[ + static struct hostent h; + static char buf[ #ifndef __UCLIBC_HAS_IPV6__ sizeof(struct in_addr) + sizeof(struct in_addr *)*2 + #else sizeof(struct in6_addr) + sizeof(struct in6_addr *)*2 + #endif /* __UCLIBC_HAS_IPV6__ */ sizeof(char *)*ALIAS_DIM + 384 /*namebuffer*/ + 32 /* margin */]; - } *sp; struct hostent *hp; - free(sp); - sp = __uc_malloc(sizeof(*sp)); - gethostbyaddr_r(addr, len, type, &sp->h, sp->buf, sizeof(sp->buf), &hp, &h_errno); + gethostbyaddr_r(addr, len, type, &h, buf, sizeof(buf), &hp, &h_errno); return hp; } @@ -1770,9 +1756,8 @@ libc_hidden_def(gethostent_r) struct hostent *gethostent(void) { - static struct { - struct hostent h; - char buf[ + static struct hostent h; + static char buf[ #ifndef __UCLIBC_HAS_IPV6__ sizeof(struct in_addr) + sizeof(struct in_addr *)*2 + #else @@ -1780,13 +1765,10 @@ struct hostent *gethostent(void) #endif /* __UCLIBC_HAS_IPV6__ */ sizeof(char *)*ALIAS_DIM + 80 /*namebuffer*/ + 2 /* margin */]; - } *sp; struct hostent *host; - free(sp); - sp = __uc_malloc(sizeof(*sp)); __UCLIBC_MUTEX_LOCK(mylock); - gethostent_r(&sp->h, sp->buf, sizeof(sp->buf), &host, &h_errno); + gethostent_r(&h, buf, sizeof(buf), &host, &h_errno); __UCLIBC_MUTEX_UNLOCK(mylock); return host; } |