From b91e30cfe5430175007fd57d720d76c537ca0440 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 17 Jan 2024 01:37:49 +0900 Subject: [PATCH] Convert rs to match stringio encoding Fix #78 --- ext/stringio/stringio.c | 4 +--- test/stringio/test_stringio.rb | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 4eb1511..c49c4a8 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -1187,9 +1187,7 @@ prepare_getline_args(struct StringIO *ptr, struct getline_arg *arg, int argc, VA rs = rs; } else { - rb_raise(rb_eArgError, "encoding mismatch: %s IO with %s RS", - rb_enc_name(enc_io), - rb_enc_name(enc_rs)); + rs = rb_str_conv_enc(rs, enc_rs, enc_io); } } } diff --git a/test/stringio/test_stringio.rb b/test/stringio/test_stringio.rb index 15fcc21..918b67b 100644 --- a/test/stringio/test_stringio.rb +++ b/test/stringio/test_stringio.rb @@ -94,6 +94,11 @@ def test_gets_utf_16 assert_equal("line2\n".encode("utf-16le"), stringio.gets) assert_equal("line3\n".encode("utf-16le"), stringio.gets) assert_nil(stringio.gets) + stringio.rewind + assert_equal("line1\n".encode("utf-16le"), stringio.gets("\n")) + assert_equal("line2\n".encode("utf-16le"), stringio.gets("\n")) + assert_equal("line3\n".encode("utf-16le"), stringio.gets("\n")) + assert_nil(stringio.gets) end def test_gets_chomp