diff options
| author | Tomoyuki Sahara <[email protected]> | 2017-05-23 15:09:04 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-05-23 15:09:04 +0900 |
| commit | 0c0b34136e17b2452e3122f22813ca71d75434fd (patch) | |
| tree | f4663bb45b31728b203a399e21ca9c60c1a0b45e | |
| parent | 87771ecf920d3fd7bc39ddb82fde040e5158718c (diff) | |
| parent | c43795c6648546eecf92e22150b7e478e63e1a31 (diff) | |
| download | mruby-0c0b34136e17b2452e3122f22813ca71d75434fd.tar.gz mruby-0c0b34136e17b2452e3122f22813ca71d75434fd.zip | |
Merge pull request #78 from ksss/syswrite
Should raise SyscallError on IO#syswrite
| -rw-r--r-- | mrblib/io.rb | 9 | ||||
| -rw-r--r-- | 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) @@ -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); } |
