[#24536] 「Rubyの落し方」 v.s. ruby_1_8 — akira yamada / やまだあきら <akira@...>

<URL:http://jp.rubyist.net/magazine/?0002-RubyCore>

40 messages 2004/10/20
[#24541] Re: 「Rubyの落し方」 v.s. ruby_1_8 — Yukihiro Matsumoto <matz@...> 2004/10/20

まつもと ゆきひろです

[#24599] 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/26

2004-10-20 (水) の 21:38 +0900 に Yukihiro Matsumoto さんは書きました:

[#24605] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-26 (火) の 16:16 +0900 に akira yamada / やまだあきら さんは書きました:

[#24606] Re: 1.8.2 preview3? — Yukihiro Matsumoto <matz@...> 2004/10/27

まつもと ゆきひろです

[#24608] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 11:48 +0900 に Yukihiro Matsumoto さんは書きました:

[#24620] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 12:42 +0900 に akira yamada / やまだあきら さんは書きました:

[#24629] Re: 1.8.2 preview3? — Tanaka Akira <akr@...17n.org> 2004/10/29

In article <1098888819.9446.14.camel@rice.p.arika.org>,

[ruby-dev:24540] IO#readpartial dumps core

From: Tanaka Akira <akr@...17n.org>
Date: 2004-10-20 11:19:00 UTC
List: ruby-dev #24540
次のようにすると core を吐きます。

% ./ruby -d -e '
r, w = IO.pipe
len = 0x20000
buf = "\0" * len
Thread.new {
  Thread.pass
  buf.replace ""
  (len/4096).times { w << "a"*4096 } }
r.readpartial(len, buf)
'
-e:9: [BUG] Segmentation fault
ruby 1.9.0 (2004-10-20) [i686-linux]

-e:9: [BUG] Segmentation fault
ruby 1.9.0 (2004-10-20) [i686-linux]

Index: io.c
===================================================================
RCS file: /src/ruby/io.c,v
retrieving revision 1.306
diff -u -p -r1.306 io.c
--- io.c	20 Oct 2004 03:42:53 -0000	1.306
+++ io.c	20 Oct 2004 11:08:57 -0000
@@ -1131,11 +1131,11 @@ io_readpartial(argc, argv, io)
 	return str;
 
     READ_CHECK(fptr->f);
-    n = read_buffered_data(RSTRING(str)->ptr, len, fptr->f);
+    n = read_buffered_data(RSTRING(str)->ptr, RSTRING(str)->len, fptr->f);
     if (n <= 0) {
       again:
         TRAP_BEG;
-        n = read(fileno(fptr->f), RSTRING(str)->ptr, len);
+        n = read(fileno(fptr->f), RSTRING(str)->ptr, RSTRING(str)->len);
         TRAP_END;
         if (n < 0) {
             if (rb_io_wait_readable(fileno(fptr->f)))
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next