Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(515)

Unified Diff: runtime/bin/socket.h

Issue 14217013: Attempt to fix strict align issue. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/socket.h
diff --git a/runtime/bin/socket.h b/runtime/bin/socket.h
index df763d75c833a3bed1fa3e5342605c4bde21957c..fa884e33381d9c3d32c709b036035abc07e0a56e 100644
--- a/runtime/bin/socket.h
+++ b/runtime/bin/socket.h
@@ -54,41 +54,34 @@ class SocketAddress {
}
static void SetAddrPort(struct sockaddr_storage* addr, intptr_t port) {
- sock_addr_ sock_addr;
- sock_addr.storage = addr;
- if (sock_addr.storage->ss_family == AF_INET) {
- sock_addr.in->sin_port = htons(port);
+ if (addr->ss_family == AF_INET) {
+ GetAsSockAddrIn(GetAsSockAddr(addr))->sin_port = htons(port);
} else {
- sock_addr.in6->sin6_port = htons(port);
+ GetAsSockAddrIn6(GetAsSockAddr(addr))->sin6_port = htons(port);
}
}
static intptr_t GetAddrPort(struct sockaddr_storage* addr) {
- sock_addr_ sock_addr;
- sock_addr.storage = addr;
- if (sock_addr.storage->ss_family == AF_INET) {
- return ntohs(sock_addr.in->sin_port);
+ if (addr->ss_family == AF_INET) {
+ return ntohs(GetAsSockAddrIn(GetAsSockAddr(addr))->sin_port);
} else {
- return ntohs(sock_addr.in6->sin6_port);
+ return ntohs(GetAsSockAddrIn6(GetAsSockAddr(addr))->sin6_port);
}
}
static struct sockaddr* GetAsSockAddr(struct sockaddr_storage* addr) {
- sock_addr_ sock_addr;
- sock_addr.storage = addr;
- return sock_addr.addr;
+ uint8_t* data = reinterpret_cast<uint8_t*>(addr);
+ return reinterpret_cast<struct sockaddr*>(data);
}
static struct sockaddr_in* GetAsSockAddrIn(struct sockaddr* addr) {
- sock_addr_ sock_addr;
- sock_addr.addr = addr;
- return sock_addr.in;
+ uint8_t* data = reinterpret_cast<uint8_t*>(addr);
+ return reinterpret_cast<struct sockaddr_in*>(data);
}
static struct sockaddr_in6* GetAsSockAddrIn6(struct sockaddr* addr) {
- sock_addr_ sock_addr;
- sock_addr.addr = addr;
- return sock_addr.in6;
+ uint8_t* data = reinterpret_cast<uint8_t*>(addr);
+ return reinterpret_cast<struct sockaddr_in6*>(data);
}
private:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698