Don't wait in io_binwrite_string if not necessary. (#9792)

This commit is contained in:
Samuel Williams 2024-02-01 15:27:44 +13:00 committed by GitHub
parent da33c5ac9f
commit 2554c5d3b8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

8
io.c
View File

@ -1800,13 +1800,11 @@ io_binwrite_string(VALUE arg)
// Write as much as possible:
ssize_t result = io_binwrite_string_internal(p->fptr, ptr, remaining);
// If only the internal buffer is written, result will be zero [bytes of given data written]. This means we
// should try again.
if (result == 0) {
errno = EWOULDBLOCK;
// If only the internal buffer is written, result will be zero [bytes of given data written]. This means we
// should try again immediately.
}
if (result > 0) {
else if (result > 0) {
if ((size_t)result == remaining) break;
ptr += result;
remaining -= result;