@@ -539,22 +539,27 @@ { if (_socket == INVALID_SOCKET) @throw [OFNotOpenException exceptionWithObject: self]; #ifndef _WIN32 + if (length > SSIZE_MAX) + @throw [OFOutOfRangeException exception]; + if (sendto(_socket, buffer, length, 0, - (struct sockaddr*)&receiver->address, receiver->length) < length) + (struct sockaddr*)&receiver->address, + receiver->length) != (ssize_t)length) @throw [OFWriteFailedException exceptionWithObject: self requestedLength: length errNo: of_socket_errno()]; #else if (length > INT_MAX) @throw [OFOutOfRangeException exception]; if (sendto(_socket, buffer, (int)length, 0, - (struct sockaddr*)&receiver->address, receiver->length) < length) + (struct sockaddr*)&receiver->address, + receiver->length) != (int)length) @throw [OFWriteFailedException exceptionWithObject: self requestedLength: length errNo: of_socket_errno()]; #endif