ふなばです。

system nil でコアダンプするみたいです。 Check_SafeStr が呼ばれないこと
があるということと、Check_SafeStr が呼ばれるにしても、 fork したあとで
はいけないということがあると思います (型の検査をするという意味もあるの
で、ここで例外があるのはよろしくないのではなかと)。 で、修正を試みてみ
ましたが、なんかパッとしないかも。


--- process.c.orig	Mon Jul 13 13:38:23 1998
+++ process.c	Fri Jul 17 08:01:49 1998
@@ -326,3 +326,2 @@
     if (progv) {
-	Check_SafeStr(progv);
 	prog = RSTRING(progv)->ptr;
@@ -331,3 +330,2 @@
     for (i=0; i<argc; i++) {
-	Check_SafeStr(argv[i]);
 	args[i] = RSTRING(argv[i])->ptr;
@@ -502,2 +500,3 @@
     VALUE prog = 0;
+    int i;
 
@@ -518,4 +517,7 @@
     }
+    if (prog)
+	Check_SafeStr(prog);
+    for (i = 0; i < argc; i++)
+	Check_SafeStr(argv[i]);
     if (argc == 1 && prog == 0) {
-	Check_SafeStr(argv[0]);
 	rb_proc_exec(RSTRING(argv[0])->ptr);
@@ -673,2 +675,3 @@
     if (argc == 1 && prog == 0) {
+	Check_SafeStr(argv[0]);
 	state = proc_spawn(RSTRING(argv[0])->ptr);
@@ -684,2 +687,3 @@
     int pid;
+    int i;
 
@@ -701,2 +705,6 @@
 
+    if (prog)
+	Check_SafeStr(prog);
+    for (i = 0; i < argc; i++)
+	Check_SafeStr(argv[i]);
   retry:


--Tadayoshi Funaba