summaryrefslogtreecommitdiff
path: root/src/AsyncNameResolver.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-11-15 13:27:46 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-11-15 13:27:46 +0000
commit928de0934501565233b1fb25f225cb19b43f7d29 (patch)
treeae23c4f696857a34f2c6627fb5afa98b27890311 /src/AsyncNameResolver.cc
parent7b63e121c7f07b070f0ae3e48677b48e1e1fe137 (diff)
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
Diffstat (limited to 'src/AsyncNameResolver.cc')
-rw-r--r--src/AsyncNameResolver.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/AsyncNameResolver.cc b/src/AsyncNameResolver.cc
index 311353ea..71dd88d4 100644
--- a/src/AsyncNameResolver.cc
+++ b/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;
}