warnings: fix another 'conversion may lose significant bits' compiler warning

pull/7/head
Yang Tse 13 years ago
parent 1089cf6052
commit c8d8ca2606
  1. 11
      ares_expand_name.c
  2. 36
      ares_nowarn.c
  3. 2
      ares_nowarn.h

@ -1,5 +1,5 @@
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998, 2011 by the Massachusetts Institute of Technology.
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
@ -33,6 +33,7 @@
#include <stdlib.h> #include <stdlib.h>
#include "ares.h" #include "ares.h"
#include "ares_nowarn.h"
#include "ares_private.h" /* for the memdebug */ #include "ares_private.h" /* for the memdebug */
static int name_length(const unsigned char *encoded, const unsigned char *abuf, static int name_length(const unsigned char *encoded, const unsigned char *abuf,
@ -91,9 +92,9 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
/* indirect root label (like 0xc0 0x0c) is 2 bytes long (stupid, but /* indirect root label (like 0xc0 0x0c) is 2 bytes long (stupid, but
valid) */ valid) */
if ((*encoded & INDIR_MASK) == INDIR_MASK) if ((*encoded & INDIR_MASK) == INDIR_MASK)
*enclen = 2; *enclen = 2L;
else else
*enclen = 1; /* the caller should move one byte to get past this */ *enclen = 1L; /* the caller should move one byte to get past this */
return ARES_SUCCESS; return ARES_SUCCESS;
} }
@ -106,7 +107,7 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
{ {
if (!indir) if (!indir)
{ {
*enclen = p + 2 - encoded; *enclen = aresx_uztosl(p + 2U - encoded);
indir = 1; indir = 1;
} }
p = abuf + ((*p & ~INDIR_MASK) << 8 | *(p + 1)); p = abuf + ((*p & ~INDIR_MASK) << 8 | *(p + 1));
@ -126,7 +127,7 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
} }
} }
if (!indir) if (!indir)
*enclen = p + 1 - encoded; *enclen = aresx_uztosl(p + 1U - encoded);
/* Nuke the trailing period if we wrote one. */ /* Nuke the trailing period if we wrote one. */
if (q > *s) if (q > *s)

@ -64,8 +64,44 @@
#elif (SIZEOF_INT == 16) #elif (SIZEOF_INT == 16)
# define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#else
# error "SIZEOF_INT not defined"
#endif #endif
#if (CARES_SIZEOF_LONG == 2)
# define CARES_MASK_SLONG 0x7FFFL
# define CARES_MASK_ULONG 0xFFFFUL
#elif (CARES_SIZEOF_LONG == 4)
# define CARES_MASK_SLONG 0x7FFFFFFFL
# define CARES_MASK_ULONG 0xFFFFFFFFUL
#elif (CARES_SIZEOF_LONG == 8)
# define CARES_MASK_SLONG 0x7FFFFFFFFFFFFFFFL
# define CARES_MASK_ULONG 0xFFFFFFFFFFFFFFFFUL
#elif (CARES_SIZEOF_LONG == 16)
# define CARES_MASK_SLONG 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFL
# define CARES_MASK_ULONG 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFUL
#else
# error "CARES_SIZEOF_LONG not defined"
#endif
/*
** unsigned size_t to signed long
*/
long aresx_uztosl(size_t uznum)
{
#ifdef __INTEL_COMPILER
# pragma warning(push)
# pragma warning(disable:810) /* conversion may lose significant bits */
#endif
return (long)(uznum & (size_t) CARES_MASK_SLONG);
#ifdef __INTEL_COMPILER
# pragma warning(pop)
#endif
}
/* /*
** unsigned size_t to signed int ** unsigned size_t to signed int
*/ */

@ -17,8 +17,8 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
long aresx_uztosl(size_t uznum);
int aresx_uztosi(size_t uznum); int aresx_uztosi(size_t uznum);
short aresx_uztoss(size_t uznum); short aresx_uztoss(size_t uznum);
short aresx_sitoss(int sinum); short aresx_sitoss(int sinum);

Loading…
Cancel
Save