Hi, When calling POSIX accept, the common way is to sockaddr_storage addr = {0}; sockaddr_len addrlen = 0; int clientFd = accept(serverFd, (sockaddr *) &addr, &addrlen);
In Swift, this translates to var addr = sockaddr_storage() var addrlen = sockaddr_len(0) int clientFd = withUnsafeMutablePointer(to: addr) { $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { addr in Foundation.accept(socket, addr, &addrlen) } } Since sockaddr is smaller than sockaddr_storage, I wonder if this is correct. If withMemoryRebound would be the same as the simple C cast, it would be okay. However, since it also requires passing the capacity, I wonder if there may be cases where it actually copies out the memory region, which could lead to memory corruption. ==> How can I guarantee that withMemoryRebound binds the complete sockaddr_storage, and prevent cases where only the first MemoryLayout<sockaddr>.size bytes are bound? Thanks Etan _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users