fix compiler warning: conversion may lose significant bits
authorYang Tse <yangsita@gmail.com>
Wed, 1 Dec 2010 22:36:19 +0000 (23:36 +0100)
committerYang Tse <yangsita@gmail.com>
Wed, 1 Dec 2010 22:36:19 +0000 (23:36 +0100)
ares_init.c
ares_nowarn.c
ares_nowarn.h

index eb1719a..3351bcf 100644 (file)
@@ -67,6 +67,7 @@
 #include "ares.h"
 #include "inet_net_pton.h"
 #include "ares_library_init.h"
+#include "ares_nowarn.h"
 #include "ares_private.h"
 
 #ifdef ANDROID
@@ -1400,13 +1401,13 @@ static int set_options(ares_channel channel, const char *str)
         q++;
       val = try_option(p, q, "ndots:");
       if (val && channel->ndots == -1)
-        channel->ndots = (int)strtol(val, NULL, 10);
+        channel->ndots = aresx_sltosi(strtol(val, NULL, 10));
       val = try_option(p, q, "retrans:");
       if (val && channel->timeout == -1)
-        channel->timeout = (int)strtol(val, NULL, 10);
+        channel->timeout = aresx_sltosi(strtol(val, NULL, 10));
       val = try_option(p, q, "retry:");
       if (val && channel->tries == -1)
-        channel->tries = (int)strtol(val, NULL, 10);
+        channel->tries = aresx_sltosi(strtol(val, NULL, 10));
       val = try_option(p, q, "rotate");
       if (val && channel->rotate == -1)
         channel->rotate = 1;
index 4eee25f..ed84ade 100644 (file)
@@ -50,3 +50,21 @@ int aresx_uztosi(size_t uznum)
 #  pragma warning(pop)
 #endif
 }
+
+/*
+** signed long to signed int
+*/
+
+int aresx_sltosi(long slnum)
+{
+#ifdef __INTEL_COMPILER
+#  pragma warning(push)
+#  pragma warning(disable:810) /* conversion may lose significant bits */
+#endif
+
+  return (int)(slnum & (long) CARES_MASK_SINT);
+
+#ifdef __INTEL_COMPILER
+#  pragma warning(pop)
+#endif
+}
index 2b407de..fb80495 100644 (file)
@@ -19,4 +19,6 @@
 
 int aresx_uztosi(size_t uznum);
 
+int aresx_sltosi(long slnum);
+
 #endif /* HEADER_CARES_NOWARN_H */