From: matz@... (Yukihiro Matsumoto) Date: 2003-12-25T15:27:57+09:00 Subject: [ruby-dev:22411] Re: Tk.callback_break causes seg-fault or hang-up まつもと ゆきひろです In message "[ruby-dev:22398] Re: Tk.callback_break causes seg-fault or hang-up" on 03/12/25, Yukihiro Matsumoto writes: |む、Tcl/Tkでpthreadを使ってない時にもsegvですか。 |それは気づいてなかったな。 | |tracebackを見る限りはメモリ関係のバグに見えるのですが。 SEGVの方はメモリバグでした。以下のパッチで直ります。ただ、 pthreadがあるとハングするのはこれとは別の理由のようです。 --- eval.c 24 Dec 2003 19:38:15 -0000 1.616 +++ eval.c 25 Dec 2003 06:25:54 -0000 @@ -5644,3 +5644,3 @@ eval(self, src, scope, file, line) if (!NIL_P(mesg) && TYPE(mesg) == T_STRING) { - rb_str_update(mesg, 0, 0, RARRAY(errat)->ptr[0]); + rb_str_prepend(mesg, RARRAY(errat)->ptr[0]); } --- string.c 30 Nov 2003 00:35:28 -0000 1.182 +++ string.c 25 Dec 2003 06:25:54 -0000 @@ -1453,2 +1453,11 @@ rb_str_insert(str, idx, str2) +VALUE +rb_str_prepend(str, str2) + VALUE str, str2; +{ + rb_str_modify(str); + rb_str_update(str, 0, 0, str2); + return str; +} + static VALUE --- intern.h 21 Dec 2003 08:29:06 -0000 1.139 +++ intern.h 25 Dec 2003 06:25:54 -0000 @@ -412,2 +412,3 @@ VALUE rb_str_append _((VALUE, VALUE)); VALUE rb_str_concat _((VALUE, VALUE)); +VALUE rb_str_prepend _((VALUE, VALUE)); int rb_str_hash _((VALUE)); @@ -415,3 +416,2 @@ int rb_str_cmp _((VALUE, VALUE)); VALUE rb_str_upto _((VALUE, VALUE, int)); -void rb_str_update _((VALUE, long, long, VALUE)); VALUE rb_str_inspect _((VALUE));