[#12763] NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

24 messages 2001/04/04
[#12765] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/04

Yukihiro Matsumotoさんの

[#12767] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/04

まつもと ゆきひろです

[#12787] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/06

Yukihiro Matsumotoさんの

[#12789] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/06

まつもと ゆきひろです

[#12790] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/06

Yukihiro Matsumotoさんの

[#12792] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/06

まつもと ゆきひろです

[#12838] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/10

Yukihiro Matsumotoさんの

[#12795] recursive malloc / fork deadlock / thread deadlock — "Akinori MUSHA" <knu@...>

 添付のスクリプトで、いくつかのプラットフォームで問題が発生する

43 messages 2001/04/07
[#12799] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/07

まつもと ゆきひろです

[#12801] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/08

なかだです。

[#12802] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/09

まつもと ゆきひろです

[#12822] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/09

なかだです。

[#12827] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/09

まつもと ゆきひろです

[#12836] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12840] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12852] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12854] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12857] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12859] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12862] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/10

ごとうゆうぞうです。

[#12866] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12878] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/11

ごとうゆうぞうです。

[#12888] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/11

ごとうゆうぞうです。

[#12892] Re: recursive malloc / fork deadlock / thread deadlock — Takahiro Kambe <taca@...> 2001/04/12

完全に理解せずに書いています。

[#12895] Re: recursive malloc / fork deadlock / thread deadlock — Jun Adachi <adachi@...> 2001/04/12

安達@沖データと申します。

[#12898] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/12

ごとうゆうぞうです。

[#12830] 1.6.4 preview — "Akinori MUSHA" <knu@...>

 そろそろ FreeBSD 4.3-RELEASE 前の ports のフリーズが迫っている

23 messages 2001/04/09
[#12844] Re: 1.6.4 preview — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12921] ObjectSpace.each_object(Symbol) — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

23 messages 2001/04/13
[#12923] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#12928] Re: ObjectSpace.each_object(Symbol) — Hisayasu Nakao <h-nakao@...> 2001/04/13

中尾@富士通です。

[#12929] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#12934] Re: ObjectSpace.each_object(Symbol) — keiju@... (石塚圭樹) 2001/04/13

けいじゅ@日本ラショナルソフトウェアです.

[#12941] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[ruby-dev:12720] Re: Process.waitall (Re: [BUG] Process::Status)

From: Koji Arai <JCA02266@...>
Date: 2001-04-01 17:55:43 UTC
List: ruby-dev #12720
新井です。

In message "[ruby-dev:12719] Process.waitall (Re:  [BUG] Process::Status)"
  on 02 Apr 2001 01:59:17 +0900,
  Koji Arai <JCA02266@nifty.ne.jp> wrote:
> 新井です。
> 
> Process.waitall が ステータス値を返していたので 
> Process::Status を返すようにしました.
> 
> また、以前、提案したように waktall がブロックを持てるように
> してみました.(そうしなかった理由がありました?)

NO_WAITPID の部分に間違いがあったのでパッチ出し直します。

# pid_tbl に要素があったら即 return してましたが wait()
# が ECHILD を返すまで return しては行けませんよね?

> ブロックを伴う場合の waitall の戻り値を各ブロックの戻り値の
> 配列にしましたが、これは余計だったような気が今はしてます。

常に pid, status の組の配列を返すようにしてみました。

ところで、NO_WAITPID の部分は rb_waitpid() が吸収していると
思うのでいらないような気がするのですが。。。勘違いしてますか?


Index: process.c
===================================================================
RCS file: /src/ruby/process.c,v
retrieving revision 1.33
diff -u -r1.33 process.c
--- process.c	2001/03/28 08:43:25	1.33
+++ process.c	2001/04/01 17:47:18
@@ -170,7 +170,7 @@
 {
     int status = NUM2INT(st);
 
-    if (WIFSIGNALED(st))
+    if (WIFSIGNALED(status))
 	return Qtrue;
     else
 	return Qfalse;
@@ -418,15 +418,20 @@
 {
     VALUE pid_status_ary, pid_status_member;
     int pid, status;
+
 #ifdef NO_WAITPID
     struct waitall_data data;
 
     data.ary = pid_status_ary = rb_ary_new();
     data.status = -1;
     st_foreach(pid_tbl, waitall_each, &data);
-    if (data.status != -1) {
-	last_status_set(data.status);
-	return pid_status_ary;
+    if (data.status != -1 && rb_block_given_p()) {
+        long i;
+        for (i = 0; i < RARRAY(pid_status_ary)->len; i++) {
+            pid_status_member = RARRAY(pid_status_ary)->ptr[i];
+            last_status_set(RARRAY(pid_status_member)->ptr[1]);
+            rb_yield(pid_status_member);
+        }
     }
 
     for (pid = -1;;) {
@@ -440,14 +445,14 @@
 	    }
 	    rb_sys_fail(0);
 	}
-	pid_status_member = rb_ary_new2(2);
-	rb_ary_push(pid_status_member, INT2NUM(pid));
-	rb_ary_push(pid_status_member, INT2NUM(status));
-	rb_ary_push(pid_status_ary, pid_status_member);
+        last_status_set(status);
+        pid_status_member = rb_assoc_new(INT2NUM(pid), rb_last_status);
+        rb_ary_push(pid_status_ary, pid_status_member);
+        if (rb_block_given_p())
+            rb_yield(pid_status_member);
     }
-    if (RARRAY(pid_status_ary)->len != 0)
-	last_status_set(status);
 #else
+    rb_last_status = Qnil;
     pid_status_ary = rb_ary_new();
     for (pid = -1;;) {
 	pid = rb_waitpid(-1, 0, &status);
@@ -456,10 +461,11 @@
 		break;
 	    rb_sys_fail(0);
 	}
-	pid_status_member = rb_ary_new2(2);
-	rb_ary_push(pid_status_member, INT2NUM(pid));
-	rb_ary_push(pid_status_member, INT2NUM(status));
-	rb_ary_push(pid_status_ary, pid_status_member);
+        last_status_set(status);
+        pid_status_member = rb_assoc_new(INT2NUM(pid), rb_last_status);
+        rb_ary_push(pid_status_ary, pid_status_member);
+        if (rb_block_given_p())
+            rb_ary_push(pid_status_ary, rb_yield(pid_status_member));
     }
 #endif
     return pid_status_ary;

--
新井康司 (Koji Arai)

In This Thread