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 коммит произвёл GitHub
Родитель da33c5ac9f
Коммит 2554c5d3b8
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
1 изменённых файлов: 3 добавлений и 5 удалений

8
io.c
Просмотреть файл

@ -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;