Actions
Bug #14338
closedIO#write without args seems wrong
Description
"ruby -e STDOUT.write
" outputs "#<IO:0x583a2de0>
" (without quotes)
"ruby -rstringio -e 'p StringIO.new.write'
" shows zero bytes written
The following restores <= 2.4 behavior for IO#write
, but other things (StringIO,
OpenSSL, ...) need to be modified, too:
diff --git a/io.c b/io.c
index eeaf0c021c..0d95d12a9b 100644
--- a/io.c
+++ b/io.c
@@ -1675,7 +1675,10 @@ io_writev(int argc, VALUE *argv, VALUE io)
static VALUE
io_write_m(int argc, VALUE *argv, VALUE io)
{
- if (argc > 1) {
+ if (argc <= 0) {
+ rb_error_arity(argc, 1, UNLIMITED_ARGUMENTS);
+ }
+ else if (argc > 1) {
return io_writev(argc, argv, io);
}
else {
Opinions? Should we raise or just return 0 when no args are given?
Updated by nobu (Nobuyoshi Nakada) over 6 years ago
- Description updated (diff)
normalperson (Eric Wong) wrote:
Opinions? Should we raise or just return 0 when no args are given?
I vote for the latter.
Updated by Anonymous over 6 years ago
- Status changed from Open to Closed
Applied in changeset trunk|r62967.
io.c: IO#write without args returns 0
This is consistent with other implementations of .write
in openssl and stringio.
- io.c (io_write_m): return 0 on argc == 0
[ruby-core:86285] [Bug #14338]
Actions
Like0
Like0Like0