[#42735] [Ruby 1.9-Feature#4147][Open] Array#sample で重みを指定したい — Yoji Ojima <redmine@...>

Feature #4147: Array#sample で重みを指定したい

52 messages 2010/12/10
[#42791] [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Shyouhei Urabe <redmine@...> 2010/12/18

チケット #4147 が更新されました。 (by Shyouhei Urabe)

[#42800] Re: [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Masaya TARUI <tarui@...> 2010/12/19

> じゃあ反対ないので実装はともかく、この仕様は基本入れる方向で考えましょう。反対の人は意思表示お早めに。

[#42763] [Ruby 1.9-Bug#4159][Open] test_block_variables(TestRipper::ParserEvents) が失敗する — Kouhei Yanagita <redmine@...>

Bug #4159: test_block_variables(TestRipper::ParserEvents) が失敗する

8 messages 2010/12/14

[#42894] [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Shyouhei Urabe <redmine@...>

Feature #4207: これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには

24 messages 2010/12/26
[#42935] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/04

むらたです。

[#42936] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/05

むらたです。

[ruby-dev:42674] [Ruby 1.9-Bug#4112][Assigned] StringIO#gets(limit) returns incomplete string

From: Nobuyoshi Nakada <redmine@...>
Date: 2010-12-02 21:58:58 UTC
List: ruby-dev #42674
Bug #4112: StringIO#gets(limit) returns incomplete string
http://redmine.ruby-lang.org/issues/show/4112

=E8=B5=B7=E7=A5=A8=E8=80=85: Nobuyoshi Nakada
=E3=82=B9=E3=83=86=E3=83=BC=E3=82=BF=E3=82=B9: Assigned, =E5=84=AA=E5=85=88=
=E5=BA=A6: Normal
=E6=8B=85=E5=BD=93=E8=80=85: Nobuyoshi Nakada, =E3=82=AB=E3=83=86=E3=82=B4=
=E3=83=AA: ext
ruby -v: 1.9.3 r30061

StringIO#gets=E3=81=AB=E9=95=B7=E3=81=95=E3=82=92=E6=8C=87=E5=AE=9A=E3=81=
=97=E3=81=9F=E3=81=A8=E3=81=8D=E3=80=81=E3=83=9E=E3=83=AB=E3=83=81=E3=83=90=
=E3=82=A4=E3=83=88=E6=96=87=E5=AD=97=E3=81=8C=E9=80=94=E4=B8=AD=E3=81=A7=E5=
=88=87=E3=82=8C=E3=82=8B=E3=81=93=E3=81=A8=E3=81=8C=E3=81=82=E3=82=8A=E3=81=
=BE=E3=81=99=E3=80=82

  StringIO.new("\u3042").gets(1) #=3D> "\xE3"
  StringIO.new("a".encode("utf-16be")).gets(1) #=3D> "\x00"


----------------------------------------
http://redmine.ruby-lang.org

Attachments (1)

stringio_gets.diff (1.05 KB, text/x-diff)
diff --git i/ext/stringio/stringio.c w/ext/stringio/stringio.c
index 75f8cd7..7edf711 100644
--- i/ext/stringio/stringio.c
+++ w/ext/stringio/stringio.c
@@ -954,7 +954,7 @@ strio_getline(int argc, VALUE *argv, struct StringIO *ptr)
     e = s + RSTRING_LEN(ptr->string);
     s += ptr->pos;
     if (limit > 0 && s + limit < e) {
-	e = s + limit;
+	e = rb_enc_right_char_head(s, s + limit, e, rb_enc_get(ptr->string));
     }
     if (NIL_P(str)) {
 	str = strio_substr(ptr, ptr->pos, e - s);
diff --git i/test/stringio/test_stringio.rb w/test/stringio/test_stringio.rb
index 30284fa..fee9abd 100644
--- i/test/stringio/test_stringio.rb
+++ w/test/stringio/test_stringio.rb
@@ -378,6 +378,11 @@ class TestStringIO < Test::Unit::TestCase
     assert_equal("a" * 10000 + "zz", f.gets("zz"))
     f = StringIO.new("a" * 10000 + "zz!")
     assert_equal("a" * 10000 + "zz!", f.gets("zzz"))
+
+    ["a".encode("utf-16be"), "\u3042"].each do |s|
+      assert_equal(s, StringIO.new(s).gets(1))
+      assert_equal(s, StringIO.new(s).gets(nil, 1))
+    end
   end
 
   def test_each

In This Thread

Prev Next