Tietew です。

要望:
exit を呼ばない ruby_stop が欲しい

理由:
組み込み Ruby で,(OSの)スレッドを立ち上げてそのスレッド内で Ruby を
動かしているのですが (他スレッドからは一切 Ruby へのアクセスはない),
そのスレッドの終了時に ruby_stop すると exit されてしまうので具合が
悪い(その後メインのスレッドでいろいろなクリーンアップ処理が待ってい
る)のです。
また ruby_finalize のみでは Ruby のスレッドのクリーンアップ処理がな
いのでこれもまた具合が悪い。

今のところ eval.c:1172 の exit(ex) をコメントアウトしてるのですが,
あまりRubyのソースに手を入れたくないので,採用していただけないでしょ
うか。


次のパッチを提案します:
Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.137.2.52
diff -u -1 -r1.137.2.52 eval.c
--- eval.c	2001/07/19 08:27:53	1.137.2.52
+++ eval.c	2001/07/19 20:55:16
@@ -1151,3 +1151,3 @@
 
-void
+int
 ruby_stop(ex)
@@ -1171,3 +1171,3 @@
     ruby_finalize();
-    exit(ex);
+    return ex;
 }
@@ -1193,3 +1193,4 @@
     if (state && !ex) ex = state;
-    ruby_stop(ex);
+    ex = ruby_stop(ex);
+    exit(ex);
 }
Index: intern.h
===================================================================
RCS file: /src/ruby/intern.h,v
retrieving revision 1.35.2.5
diff -u -1 -r1.35.2.5 intern.h
--- intern.h	2001/07/19 07:59:48	1.35.2.5
+++ intern.h	2001/07/19 20:55:16
@@ -150,3 +150,3 @@
 void ruby_finalize _((void));
-void ruby_stop _((int));
+int ruby_stop _((int));
 void rb_gc_mark_threads _((void));



―[ Tietew ]――――――――――――――――――――――――――――
 メ : tietew / tietew.net / tietew / raug.net / tietew / masuclub.net
ホペ: http://www.tietew.net/     Tietew Windows Lab.
      http://www.masuclub.net/   鱒倶楽部
指紋: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA