diff options
author | Yang Tse <yangsita@gmail.com> | 2010-02-26 16:42:33 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2010-02-26 16:42:33 +0000 |
commit | bcd1c7c2e92d41ab02163a36a1ab9d5a7afd83a9 (patch) | |
tree | 0b98ca5c331ee57703a51747d0f8e975ceaffab7 /ares | |
parent | 87428e07ca17a99fb2409ec39213b7badbe967ea (diff) |
fix compiler warning
Diffstat (limited to 'ares')
-rw-r--r-- | ares/Makefile.inc | 2 | ||||
-rw-r--r-- | ares/ares__read_line.c | 7 | ||||
-rw-r--r-- | ares/ares_nowarn.c | 53 | ||||
-rw-r--r-- | ares/ares_nowarn.h | 23 |
4 files changed, 84 insertions, 1 deletions
diff --git a/ares/Makefile.inc b/ares/Makefile.inc index 322785899..8958b6059 100644 --- a/ares/Makefile.inc +++ b/ares/Makefile.inc @@ -19,6 +19,7 @@ CSOURCES = ares__close_sockets.c \ ares_library_init.c \ ares_llist.c \ ares_mkquery.c \ + ares_nowarn.c \ ares_parse_a_reply.c \ ares_parse_aaaa_reply.c \ ares_parse_ns_reply.c \ @@ -47,6 +48,7 @@ HHEADERS = ares.h \ ares_ipv6.h \ ares_library_init.h \ ares_llist.h \ + ares_nowarn.h \ ares_private.h \ ares_rules.h \ ares_strcasecmp.h \ diff --git a/ares/ares__read_line.c b/ares/ares__read_line.c index 29f8e5dc0..2e94945dc 100644 --- a/ares/ares__read_line.c +++ b/ares/ares__read_line.c @@ -20,6 +20,7 @@ #include <stdlib.h> #include <string.h> #include "ares.h" +#include "ares_nowarn.h" #include "ares_private.h" /* This is an internal function. Its contract is to read a line from @@ -46,7 +47,9 @@ int ares__read_line(FILE *fp, char **buf, size_t *bufsize) for (;;) { - if (!fgets(*buf + offset, (int)(*bufsize - offset), fp)) + int bytestoread = aresx_uztosi(*bufsize - offset); + + if (!fgets(*buf + offset, bytestoread, fp)) return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF; len = offset + strlen(*buf + offset); if ((*buf)[len - 1] == '\n') @@ -55,6 +58,8 @@ int ares__read_line(FILE *fp, char **buf, size_t *bufsize) break; } offset = len; + if(len < *bufsize - 1) + continue; /* Allocate more space. */ newbuf = realloc(*buf, *bufsize * 2); diff --git a/ares/ares_nowarn.c b/ares/ares_nowarn.c new file mode 100644 index 000000000..91d0a5f20 --- /dev/null +++ b/ares/ares_nowarn.c @@ -0,0 +1,53 @@ +/* $Id$ */ + +/* Copyright (C) 2010 by Daniel Stenberg + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in + * advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + * M.I.T. makes no representations about the suitability of + * this software for any purpose. It is provided "as is" + * without express or implied warranty. + */ + + +#include "ares_setup.h" + +#include "ares_nowarn.h" + +#if (SIZEOF_INT == 2) +# define CARES_MASK_SINT 0x7FFF +# define CARES_MASK_UINT 0xFFFF +#elif (SIZEOF_INT == 4) +# define CARES_MASK_SINT 0x7FFFFFFF +# define CARES_MASK_UINT 0xFFFFFFFF +#elif (SIZEOF_INT == 8) +# define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFF +# define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFF +#elif (SIZEOF_INT == 16) +# define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +# define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +#endif + +/* +** size_t to signed int +*/ + +int aresx_uztosi(size_t uznum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + return (int)(uznum & (size_t) CARES_MASK_SINT); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif +} diff --git a/ares/ares_nowarn.h b/ares/ares_nowarn.h new file mode 100644 index 000000000..0b7181bd4 --- /dev/null +++ b/ares/ares_nowarn.h @@ -0,0 +1,23 @@ +#ifndef HEADER_CARES_NOWARN_H +#define HEADER_CARES_NOWARN_H + +/* $Id$ */ + +/* Copyright (C) 2010 by Daniel Stenberg + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in + * advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + * M.I.T. makes no representations about the suitability of + * this software for any purpose. It is provided "as is" + * without express or implied warranty. + */ + +int aresx_uztosi(size_t uznum); + +#endif /* HEADER_CARES_NOWARN_H */ |