diff --git a/Libraries/LibCore/SocketWindows.cpp b/Libraries/LibCore/SocketWindows.cpp index 793d65b2612..33b83b2f79e 100644 --- a/Libraries/LibCore/SocketWindows.cpp +++ b/Libraries/LibCore/SocketWindows.cpp @@ -15,6 +15,14 @@ namespace Core { +static WSABUF make_wsa_buf(ReadonlyBytes bytes) +{ + WSABUF buffer {}; + buffer.buf = reinterpret_cast(const_cast(bytes.data())); + buffer.len = static_cast(bytes.size()); + return buffer; +} + ErrorOr PosixSocketHelper::read(Bytes buffer, int flags) { if (!is_open()) @@ -22,7 +30,7 @@ ErrorOr PosixSocketHelper::read(Bytes buffer, int flags) // FIXME: also take into account if PosixSocketHelper is blocking/non-blocking (see set_blocking) bool blocking = !(flags & MSG_DONTWAIT); - WSABUF buf = { static_cast(buffer.size()), reinterpret_cast(buffer.data()) }; + WSABUF buf = make_wsa_buf(buffer); DWORD nread = 0; DWORD fl = 0; OVERLAPPED ov = {}; @@ -66,7 +74,7 @@ ErrorOr PosixSocketHelper::write(ReadonlyBytes buffer, int flags) // FIXME: Implement non-blocking PosixSocketHelper::write (void)flags; - WSABUF buf = { static_cast(buffer.size()), reinterpret_cast(const_cast(buffer.data())) }; + WSABUF buf = make_wsa_buf(buffer); DWORD nwritten = 0; if (WSASend(m_fd, &buf, 1, &nwritten, 0, NULL, NULL) == SOCKET_ERROR)