From c43795c6648546eecf92e22150b7e478e63e1a31 Mon Sep 17 00:00:00 2001 From: ksss Date: Sun, 21 May 2017 16:58:57 +0900 Subject: Should raise SyscallError on IO#syswrite instead of IOError --- mrblib/io.rb | 9 ++------- src/io.c | 3 +++ 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 51a659f0e..452a61a3f 100644 --- a/src/io.c +++ b/src/io.c @@ -705,6 +705,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); } -- cgit v1.2.3