diff options
Diffstat (limited to 'ares/ares_process.c')
-rw-r--r-- | ares/ares_process.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/ares/ares_process.c b/ares/ares_process.c index 9e5156e4e..4a88b76a8 100644 --- a/ares/ares_process.c +++ b/ares/ares_process.c @@ -16,27 +16,33 @@ #include "setup.h" #include <sys/types.h> -#ifdef WIN32 +#if defined(WIN32) && !defined(WATT32) #include "nameser.h" + #else #include <sys/socket.h> +#ifdef HAVE_SYS_UIO_H #include <sys/uio.h> +#endif #include <netinet/in.h> #include <netdb.h> #include <arpa/nameser.h> +#ifdef HAVE_UNISTD_H #include <unistd.h> #endif +#endif #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <time.h> #include <errno.h> + #include "ares.h" #include "ares_dns.h" #include "ares_private.h" -#ifdef WIN32 +#if defined(WIN32) || defined(WATT32) #define GET_ERRNO() WSAGetLastError() #else #define GET_ERRNO() errno @@ -234,7 +240,8 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now) */ process_answer(channel, server->tcp_buffer, server->tcp_length, i, 1, now); - free(server->tcp_buffer); + if (server->tcp_buffer) + free(server->tcp_buffer); server->tcp_buffer = NULL; server->tcp_lenbuf_pos = 0; } |