@@ -549,12 +549,12 @@ if (length > sizeof(ret.sockaddr.un.sun_path)) @throw [OFOutOfRangeException exception]; memset(&ret, '\0', sizeof(ret)); ret.family = OFSocketAddressFamilyUNIX; - ret.length = (socklen_t)(sizeof(ret.sockaddr.un) - - (sizeof(ret.sockaddr.un.sun_path) - length)); + ret.length = (socklen_t) + (offsetof(struct sockaddr_un, sun_path) + length); #ifdef AF_UNIX ret.sockaddr.un.sun_family = AF_UNIX; #else ret.sockaddr.un.sun_family = AF_UNSPEC;