summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--io.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/io.c b/io.c
index 54952c1a2f..7d8b9bf410 100644
--- a/io.c
+++ b/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;