From: Koji Arai Date: 1999-12-02T21:09:49+09:00 Subject: [ruby-dev:8504] Re: require で SEGV 新井です。 >>> From: Koji Arai >>> Date: 02 Dec 1999 20:09:48 +0900 >>> Subject: [ruby-dev:8502] Re: require で SEGV > 新井です。 > rb_f_require()の最初の方の rb_provided() で、"nkf.o" > は弾かれてないとダメなんだと思います。 ちょっとソースを見直してみました。 うーん、必要ないといえばないのかな?でも、わかりにくいですね。 > あと、loading_tbl ってst_delete()してますが > どこにも、st_insert()してる場所がないような。 > > # でも、デッドロックが恐いのでパッチはださない(Thread苦手) といいつつ書いてしまった(やっぱ閑人らしい)。ま、お勉強ってこ とで、あってますか? # 最初から勘違いだったりして Index: eval.c =================================================================== RCS file: /home/cvs/ruby/eval.c,v retrieving revision 1.20 diff -u -p -u -r1.20 eval.c --- eval.c 1999/12/02 06:58:47 1.20 +++ eval.c 1999/12/02 11:58:15 @@ -7361,10 +7361,14 @@ static int rb_thread_loading(feature) const char *feature; { - if (!rb_provided(feature)) return Qfalse; /* need to load */ - if (!loading_tbl) { - loading_tbl = st_init_strtable(); + if (!rb_provided(feature)) { + if (!loading_tbl) { + loading_tbl = st_init_strtable(); + } + st_insert(loading_tbl, feature, 0); + return Qfalse; /* need to load */ } + while (st_lookup(loading_tbl, feature, 0)) { CHECK_INTS; rb_thread_schedule();