diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-08-13 07:21:13 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-08-13 07:21:13 +0000 |
commit | 256800ffa0390e17a5c30419a7d2af797a76011c (patch) | |
tree | 7b3a6505f3c749305b3913282cb33242c1753764 | |
parent | 8e6cf0de39e58a5e345eb981b3e5b2c0ea06ec64 (diff) | |
download | ruby-256800ffa0390e17a5c30419a7d2af797a76011c.tar.gz |
stringio.c: encoding at empty result
* ext/stringio/stringio.c (strio_gets): should return string with
the external encoding, at empty result.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ext/stringio/stringio.c | 3 | ||||
-rw-r--r-- | test/stringio/test_stringio.rb | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 032f80a840..26dc1a099a 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -1149,7 +1149,8 @@ strio_gets(int argc, VALUE *argv, VALUE self) VALUE str; if (prepare_getline_args(&arg, argc, argv)->limit == 0) { - return rb_str_new(0, 0); + struct StringIO *ptr = readable(self); + return rb_enc_str_new(0, 0, get_enc(ptr)); } str = strio_getline(&arg, readable(self)); diff --git a/test/stringio/test_stringio.rb b/test/stringio/test_stringio.rb index 89fc54e922..8faf4d8acc 100644 --- a/test/stringio/test_stringio.rb +++ b/test/stringio/test_stringio.rb @@ -79,6 +79,8 @@ class TestStringIO < Test::Unit::TestCase assert_equal("def\n", stringio.gets("")) assert_raise(TypeError){StringIO.new("").gets(1, 1)} assert_nothing_raised {StringIO.new("").gets(nil, nil)} + + assert_string("", Encoding::UTF_8, StringIO.new("foo").gets(0)) end def test_gets_chomp |