| Index: runtime/bin/socket_android.cc
|
| diff --git a/runtime/bin/socket_android.cc b/runtime/bin/socket_android.cc
|
| index 39b142b08e5d204f7923cd459294182fa7569904..61dd61ed98537d12ad9ee0095a8aa190a55c5fe0 100644
|
| --- a/runtime/bin/socket_android.cc
|
| +++ b/runtime/bin/socket_android.cc
|
| @@ -25,10 +25,18 @@ namespace bin {
|
| SocketAddress::SocketAddress(struct sockaddr* sockaddr) {
|
| ASSERT(INET6_ADDRSTRLEN >= INET_ADDRSTRLEN);
|
| RawAddr* raw = reinterpret_cast<RawAddr*>(sockaddr);
|
| - const char* result = inet_ntop(sockaddr->sa_family,
|
| - &raw->in.sin_addr,
|
| - as_string_,
|
| - INET6_ADDRSTRLEN);
|
| + if (sockaddr->sa_family == AF_INET) {
|
| + result = inet_ntop(sockaddr->sa_family,
|
| + &raw->in.sin_addr,
|
| + as_string_,
|
| + INET_ADDRSTRLEN);
|
| + } else {
|
| + ASSERT(sockaddr->sa_family == AF_INET6);
|
| + result = inet_ntop(sockaddr->sa_family,
|
| + &raw->in6.sin6_addr,
|
| + as_string_,
|
| + INET6_ADDRSTRLEN);
|
| + }
|
| if (result == NULL) as_string_[0] = 0;
|
| memmove(reinterpret_cast<void *>(&addr_),
|
| sockaddr,
|
|
|