[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30265] Re: [ruby-cvs:18879] Ruby:r11631: * eval_thread.c, common.mk: remove eval_thread.c.

From: "U.Nakamura" <usa@...>
Date: 2007-02-05 14:48:25 UTC
List: ruby-dev #30265
こんにちは、なかむら(う)です。

In message "[ruby-dev:30264] Re: [ruby-cvs:18879] Ruby:r11631: * eval_thread.c, common.mk: remove eval_thread.c."
    on Feb.05,2007 22:31:04, <usa@garbagecollect.jp> wrote:
| ext/pty/pty.cとwin32/win32.cでrb_last_statusを使ってます。
| それとio.cのTODOとを考え合わせると、アクセスする関数を外部に
| 提供するべきではないでしょうか。

パッチに漏れがありました。
# あと、win32/win32.cはrb_iv_get()しないでいきなりNUM2INT()の
# ままでよかった...

Index: process.c
===================================================================
--- process.c	(revision 11632)
+++ process.c	(working copy)
@@ -197,8 +197,8 @@
 
 static VALUE rb_cProcStatus;
 
-static void
-last_status_set(int status, int pid)
+void
+rb_last_status_set(int status, int pid)
 {
     yarv_vm_t *vm = GET_VM();
     vm->last_status = rb_obj_alloc(rb_cProcStatus);
@@ -206,8 +206,8 @@
     rb_iv_set(vm->last_status, "pid", INT2FIX(pid));
 }
 
-static VALUE
-last_status_get(void)
+VALUE
+rb_last_status_get(void)
 {
     return GET_VM()->last_status;
 }
@@ -588,7 +588,7 @@
     }
 #else  /* NO_WAITPID */
     if (pid_tbl && st_lookup(pid_tbl, pid, (st_data_t *)st)) {
-	last_status_set(*st, pid);
+	rb_last_status_set(*st, pid);
 	st_delete(pid_tbl, (st_data_t*)&pid, NULL);
 	return pid;
     }
@@ -618,7 +618,7 @@
     }
 #endif
     if (result > 0) {
-	last_status_set(*st, result);
+	rb_last_status_set(*st, result);
     }
     return result;
 }
@@ -642,7 +642,7 @@
 static int
 waitall_each(int pid, int status, VALUE ary)
 {
-    last_status_set(status, pid);
+    rb_last_status_set(status, pid);
     rb_ary_push(ary, rb_assoc_new(INT2NUM(pid), GET_VM()->last_status));
     return ST_DELETE;
 }
@@ -804,7 +804,7 @@
 	    }
 	    rb_sys_fail(0);
 	}
-	last_status_set(status, pid);
+	rb_last_status_set(status, pid);
 	rb_ary_push(result, rb_assoc_new(INT2NUM(pid), GET_VM()->last_status));
     }
 #else
@@ -1103,7 +1103,7 @@
 #endif
     before_exec();
     status = spawnv(P_WAIT, prog, argv);
-    last_status_set(status == -1 ? 127 : status, 0);
+    rb_last_status_set(status == -1 ? 127 : status, 0);
     after_exec();
     return status;
 }
@@ -1140,7 +1140,7 @@
 	    char *shell = dln_find_exe("sh", 0);
 	    before_exec();
 	    status = shell?spawnl(P_WAIT,shell,"sh","-c",str,(char*)NULL):system(str);
-	    last_status_set(status == -1 ? 127 : status, 0);
+	    rb_last_status_set(status == -1 ? 127 : status, 0);
 	    after_exec();
 	    return status;
 	}
@@ -1557,9 +1557,9 @@
     if (argc) prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
     status = system(StringValuePtr(prog));
 # if defined(__human68k__) || defined(__DJGPP__)
-    last_status_set(status == -1 ? 127 : status, 0);
+    rb_last_status_set(status == -1 ? 127 : status, 0);
 # else
-    last_status_set((status & 0xff) << 8, 0);
+    rb_last_status_set((status & 0xff) << 8, 0);
 # endif
 #endif
     return status;
@@ -3600,7 +3600,7 @@
 void
 Init_process(void)
 {
-    rb_define_virtual_variable("$?", last_status_get, 0);
+    rb_define_virtual_variable("$?", rb_last_status_get, 0);
     rb_define_virtual_variable("$$", get_pid, 0);
     rb_define_global_function("exec", rb_f_exec, -1);
     rb_define_global_function("fork", rb_f_fork, 0);

それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>



In This Thread