summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mrblib/io.rb9
-rw-r--r--src/io.c3
2 files changed, 5 insertions, 7 deletions
diff --git a/mrblib/io.rb b/mrblib/io.rb
index 08f9180dd..694fdb0c9 100644
--- a/mrblib/io.rb
+++ b/mrblib/io.rb
@@ -123,14 +123,9 @@ class IO
def write(string)
str = string.is_a?(String) ? string : string.to_s
return str.size unless str.size > 0
-
len = syswrite(str)
- if len != -1
- @pos += len
- return len
- end
-
- raise IOError
+ @pos += len
+ len
end
def <<(str)
diff --git a/src/io.c b/src/io.c
index 7a1121338..6d1b39cc5 100644
--- a/src/io.c
+++ b/src/io.c
@@ -708,6 +708,9 @@ mrb_io_syswrite(mrb_state *mrb, mrb_value io)
fd = fptr->fd2;
}
length = write(fd, RSTRING_PTR(buf), RSTRING_LEN(buf));
+ if (length == -1) {
+ mrb_sys_fail(mrb, 0);
+ }
return mrb_fixnum_value(length);
}