Pārlūkot izejas kodu

2009-11-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Copied in_addr instead of just casting from char* which might
	violate strict aliasing rules.
	* src/AsyncNameResolver.cc
Tatsuhiro Tsujikawa 16 gadi atpakaļ
vecāks
revīzija
928de09345
2 mainītis faili ar 9 papildinājumiem un 2 dzēšanām
  1. 6 0
      ChangeLog
  2. 3 2
      src/AsyncNameResolver.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2009-11-15  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Copied in_addr instead of just casting from char* which might
+	violate strict aliasing rules.
+	* src/AsyncNameResolver.cc
+
 2009-11-15  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Use dynamic_pointer_cast

+ 3 - 2
src/AsyncNameResolver.cc

@@ -56,8 +56,9 @@ void callback(void* arg, int status, struct hostent* host)
     return;
   }
   for(char** ap = host->h_addr_list; *ap; ++ap) {
-    resolverPtr->_resolvedAddresses.push_back
-      (inet_ntoa(*reinterpret_cast<struct in_addr*>(*ap)));
+    struct in_addr addr;
+    memcpy(&addr, *ap, sizeof(in_addr));
+    resolverPtr->_resolvedAddresses.push_back(inet_ntoa(addr));
   }
   resolverPtr->status = AsyncNameResolver::STATUS_SUCCESS;
 }