[#24210] [SEGV] redefine Struct with same name — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。Struct を同じ名前で二度定義すると、
6 messages
2004/09/03
[#24213] 1.instance_eval "@@a" dumps core — Tanaka Akira <akr@...17n.org>
次のように、1.instance_eval "@@a" とすると core を吐きます。
10 messages
2004/09/03
[#24217] Re: 1.instance_eval "@@a" dumps core
— Yukihiro Matsumoto <matz@...>
2004/09/03
まつもと ゆきひろです
[#24218] Re: 1.instance_eval "@@a" dumps core
— Tanaka Akira <akr@...17n.org>
2004/09/04
In article <1094229200.559688.22218.nullmailer@picachu.netlab.jp>,
[#24219] Re: 1.instance_eval "@@a" dumps core
— Yukihiro Matsumoto <matz@...>
2004/09/05
まつもと ゆきひろです
[#24220] Re: 1.instance_eval "@@a" dumps core
— Tanaka Akira <akr@...17n.org>
2004/09/05
In article <1094342919.363209.2395.nullmailer@picachu.netlab.jp>,
[#24221] Re: 1.instance_eval "@@a" dumps core
— Yukihiro Matsumoto <matz@...>
2004/09/05
まつもと ゆきひろです
[#24231] system("") — Tanaka Akira <akr@...17n.org>
次のように、system("") が例外になるのは意図された挙動でしょうか?
6 messages
2004/09/06
[#24234] 要素代入での?!の扱いについて — Nowake <nowake@...>
野分です。
6 messages
2004/09/06
[#24255] ripper committed — Minero Aoki <aamine@...>
青木です。
11 messages
2004/09/12
[#24261] Array#collect! dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
7 messages
2004/09/14
[#24277] new NKF2拡張ライブラリ — "Kenichi.Tamura" <sgs02516@...>
たむらです。
5 messages
2004/09/16
[#24287] Array#sort! with calcc dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
6 messages
2004/09/19
[#24288] Re: Array#sort! with calcc dumps core
— Yukihiro Matsumoto <matz@...>
2004/09/19
まつもと ゆきひろです
[#24302] Procのブロック呼び出しメソッド名を自由に設定 — Nowake <nowake@...>
こんばんは、野分です。
8 messages
2004/09/21
[#24304] Re: Procのブロック呼び出しメソッド名を自由に設定
— Yukihiro Matsumoto <matz@...>
2004/09/22
まつもと ゆきひろです
[#24311] Array#sort! dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
5 messages
2004/09/22
[#24315] String#sub! dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
5 messages
2004/09/23
[#24332] Marshal.dump dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
4 messages
2004/09/24
[#24337] Re: [ruby-cvs] ruby: * hash.c: iterator functions for hash_foreach() should return enum — nobu@...
なかだです。
4 messages
2004/09/24
[#24341] Array#* dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
9 messages
2004/09/25
[#24351] Re: Array#* dumps core
— nobu@...
2004/09/27
なかだです。
[#24354] finalizer
— Tanaka Akira <akr@...17n.org>
2004/09/27
In article <200409270225.i8R2PDfs014206@sharui.nakada.niregi.kanuma.tochigi.jp>,
[#24368] Enumerable#sort_by dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
4 messages
2004/09/28
[ruby-dev:24271] Re: Array#assoc dumps core
From:
nobu@...
Date:
2004-09-15 05:29:09 UTC
List:
ruby-dev #24271
なかだです。
At Wed, 15 Sep 2004 12:30:27 +0900,
Tanaka Akira wrote in [ruby-dev:24269]:
> 次のようにすると core を吐きます。
>
> % ./ruby -e '
> len = 100000
> arr = [[nil, nil]] * len
> o = Object.new
> class << o; self end.__send__(:define_method, :==) {
> arr.clear
> arr.compact!
> false
> }
> arr[100][0] = o
> p arr.assoc(true)
> '
> -e:11: [BUG] Segmentation fault
> ruby 1.9.0 (2004-09-14) [i686-linux]
> # これが最後のはずがない
rassocもですね。あとはRARRAY()->ptrを取り出したままメソッドを呼
んだりyieldしたりしているものはなさそうに見えます。
Index: array.c
===================================================================
RCS file: /cvs/ruby/src/ruby/array.c,v
retrieving revision 1.154
diff -u -2 -p -r1.154 array.c
--- array.c 24 Jul 2004 09:48:21 -0000 1.154
+++ array.c 15 Sep 2004 05:26:21 -0000
@@ -2468,15 +2468,13 @@ rb_ary_assoc(ary, key)
VALUE ary, key;
{
- VALUE *p, *pend;
+ long i;
+ VALUE v;
- p = RARRAY(ary)->ptr;
- pend = p + RARRAY(ary)->len;
-
- while (p < pend) {
- if (TYPE(*p) == T_ARRAY &&
- RARRAY(*p)->len > 0 &&
- rb_equal(RARRAY(*p)->ptr[0], key))
- return *p;
- p++;
+ for (i = 0; i < RARRAY(ary)->len; ++i) {
+ v = RARRAY(ary)->ptr[i];
+ if (TYPE(v) == T_ARRAY &&
+ RARRAY(v)->len > 0 &&
+ rb_equal(RARRAY(v)->ptr[0], key))
+ return v;
}
return Qnil;
@@ -2501,15 +2499,13 @@ rb_ary_rassoc(ary, value)
VALUE ary, value;
{
- VALUE *p, *pend;
-
- p = RARRAY(ary)->ptr;
- pend = p + RARRAY(ary)->len;
+ long i;
+ VALUE v;
- while (p < pend) {
- if (TYPE(*p) == T_ARRAY
- && RARRAY(*p)->len > 1
- && rb_equal(RARRAY(*p)->ptr[1], value))
- return *p;
- p++;
+ for (i = 0; i < RARRAY(ary)->len; ++i) {
+ v = RARRAY(ary)->ptr[i];
+ if (TYPE(v) == T_ARRAY &&
+ RARRAY(v)->len > 1 &&
+ rb_equal(RARRAY(v)->ptr[1], value))
+ return v;
}
return Qnil;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦