[#25035] 拡張ライブラリへの共有ライブラリのPATHの埋め込み — Takahiro Kambe <taca@...>

こんにちは。

16 messages 2004/12/03
[#25070] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — nobu@... 2004/12/06

なかだです。

[#25071] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — Takahiro Kambe <taca@...> 2004/12/06

In message <200412060607.iB667giF007533@sharui.nakada.niregi.kanuma.tochigi.jp>

[#25089] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — nobu@... 2004/12/07

なかだです。

[#25090] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — Takahiro Kambe <taca@...> 2004/12/07

In message <200412070015.iB70FAiF012770@sharui.nakada.niregi.kanuma.tochigi.jp>

[#25093] Re: 拡張ライブラリへの共有ライブラリのPATHの埋め込み — akira yamada / やまだあきら <akira@...> 2004/12/07

2004-12-07 (火) の 12:27 +0900 に Takahiro Kambe さんは書きました:

[#25041] temporal locking already locked string on simultaneous write — Tanaka Akira <akr@...17n.org>

同じ文字列をほぼ同時に IO に書き込むと、temporal locking already

13 messages 2004/12/04
[#25042] Re: temporal locking already locked string on simultaneous write — Yukihiro Matsumoto <matz@...> 2004/12/04

まつもと ゆきひろです

[#25043] Re: temporal locking already locked string on simultaneous write — Tanaka Akira <akr@...17n.org> 2004/12/04

In article <1102133507.339625.10453.nullmailer@x31.priv.netlab.jp>,

[#25096] double free problem — "Akinori MUSHA" <knu@...>

 ご無沙汰しております。

15 messages 2004/12/07
[#25099] Re: double free problem — Yukihiro Matsumoto <matz@...> 2004/12/07

Hi,

[#25101] non-stdio buffering — Tanaka Akira <akr@...17n.org>

えぇと、今回 1.9 でなにが起きたのかを私が把握している範囲でまとめてお

18 messages 2004/12/07

[#25152] 1.8 reopen problem with duplex popen — Tanaka Akira <akr@...17n.org>

次のように、1.8 で双方向 popen な IO を reopen するとエラーになること

11 messages 2004/12/10

[#25158] core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org>

NetBSD 2.0 で次のようにすると core を吐きます。

18 messages 2004/12/11
[#25159] Re: core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org> 2004/12/11

In article <87hdmsivva.fsf@serein.a02.aist.go.jp>,

[#25163] Re: core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org> 2004/12/12

In article <87ekhwiv7g.fsf@serein.a02.aist.go.jp>,

[#25165] Re: core dump on NetBSD 2.0 — nobu@... 2004/12/13

なかだです。

[#25167] Re: core dump on NetBSD 2.0 — Tanaka Akira <akr@...17n.org> 2004/12/13

In article <200412130040.iBD0e8Qh003275@sharui.nakada.niregi.kanuma.tochigi.jp>,

[#25193] 1.8.2 release schedule — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

15 messages 2004/12/14

[#25299] Re: リリース準備 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

20 messages 2004/12/24
[#25301] Re: リリース準備 — TAKAHASHI Masayoshi <maki@...> 2004/12/24

高橋征義です。

[#25302] test_readline.rb blocks on BSD again — GOTOU Yuuzou <gotoyuzo@...>

In message <20041223175402.3116FC6718@lithium.ruby-lang.org>,

15 messages 2004/12/24
[#25314] Re: test_readline.rb blocks on BSD again — GOTOU Yuuzou <gotoyuzo@...> 2004/12/24

In message <20041224.131211.846943951.gotoyuzo@sawara.does.notwork.org>,

[#25315] Re: test_readline.rb blocks on BSD again — Yukihiro Matsumoto <matz@...> 2004/12/24

まつもと ゆきひろです

[#25317] Re: test_readline.rb blocks on BSD again — WATANABE Hirofumi <eban@...> 2004/12/25

わたなべです。

[ruby-dev:25147] Re: Set/test_eq failed on Tru64UNIX

From: nobu@...
Date: 2004-12-09 05:00:23 UTC
List: ruby-dev #25147
なかだです。

At Thu, 9 Dec 2004 13:36:14 +0900,
Yukihiro Matsumoto wrote in [ruby-dev:25146]:
> |coreと標準ライブラリで数えてみると、inspectを定義しているのはC
> |で15、rubyで59ありました。これだけならともかく、外部のものまで
> |考えると、pも使えなくなるのはちょっと痛いような気がします。
> |inspectのarityを見るというのはどうでしょうか。
> 
> arityって簡単にチェックできましたっけ。funcall_rescueを使っ
> てとりあえず呼んでみるとか。で、普段から-dを使ってる人が悲鳴
> を上げると。

method_arity()から分離すればそう大変ではないと思いますが。

呼び出し側はこんな感じで。

    arity = rb_method_arity(rb_method_node(CLASS_OF(obj), id_inspect));
    result = rb_funcall2(obj, id_inspect, arity != 0, &context);


Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.745
diff -U2 -p -d -r1.745 eval.c
--- eval.c	9 Dec 2004 02:19:50 -0000	1.745
+++ eval.c	9 Dec 2004 04:59:54 -0000
@@ -8338,6 +8338,6 @@ proc_call(proc, args)
  */
 
-static VALUE
-proc_arity(proc)
+VALUE
+rb_proc_arity(proc)
     VALUE proc;
 {
@@ -8353,16 +8353,16 @@ proc_arity(proc)
 	    return method_arity(data->body->nd_tval);
 	}
-	return INT2FIX(0);
+	return 0;
     }
-    if (var == (NODE*)1) return INT2FIX(0);
-    if (var == (NODE*)2) return INT2FIX(0);
+    if (var == (NODE*)1) return 0;
+    if (var == (NODE*)2) return 0;
     if (nd_type(var) == NODE_BLOCK_ARG) {
 	var = var->nd_args;
-	if (var == (NODE*)1) return INT2FIX(0);
-	if (var == (NODE*)2) return INT2FIX(0);
+	if (var == (NODE*)1) return 0;
+	if (var == (NODE*)2) return 0;
     }
     switch (nd_type(var)) {
       default:
-	return INT2FIX(1);
+	return 1;
       case NODE_MASGN:
 	list = var->nd_head;
@@ -8372,9 +8372,17 @@ proc_arity(proc)
 	    list = list->nd_next;
 	}
-	if (var->nd_args) return INT2FIX(-n-1);
-	return INT2FIX(n);
+	if (var->nd_args) return -n-1;
+	return n;
     }
 }
 
+static VALUE
+proc_arity(proc)
+    VALUE proc;
+{
+    int arity = rb_proc_arity(proc);
+    return INT2FIX(arity);
+}
+
 /*
  * call-seq:
@@ -9029,4 +9037,32 @@ umethod_bind(method, recv)
 }
 
+int
+rb_method_arity(body)
+    NODE *body;
+{
+    switch (nd_type(body)) {
+      case NODE_CFUNC:
+	if (body->nd_argc < 0) return -1;
+	return body->nd_argc;
+      case NODE_ZSUPER:
+	return -1;
+      case NODE_ATTRSET:
+	return 1;
+      case NODE_IVAR:
+	return 0;
+      case NODE_BMETHOD:
+	return rb_proc_arity(body->nd_cval);
+      default:
+	body = body->nd_next;	/* skip NODE_SCOPE */
+	if (nd_type(body) == NODE_BLOCK)
+	    body = body->nd_head;
+	if (!body) return 0;
+	n = body->nd_cnt;
+	if (body->nd_opt || body->nd_rest != -1)
+	    n = -n-1;
+	return n;
+    }
+}
+
 /*
  *  call-seq:
@@ -9067,32 +9103,9 @@ method_arity(method)
 {
     struct METHOD *data;
-    NODE *body;
     int n;
 
     Data_Get_Struct(method, struct METHOD, data);
-
-    body = data->body;
-    switch (nd_type(body)) {
-      case NODE_CFUNC:
-	if (body->nd_argc < 0) return INT2FIX(-1);
-	return INT2FIX(body->nd_argc);
-      case NODE_ZSUPER:
-	return INT2FIX(-1);
-      case NODE_ATTRSET:
-	return INT2FIX(1);
-      case NODE_IVAR:
-	return INT2FIX(0);
-      case NODE_BMETHOD:
-	return proc_arity(body->nd_cval);
-      default:
-	body = body->nd_next;	/* skip NODE_SCOPE */
-	if (nd_type(body) == NODE_BLOCK)
-	    body = body->nd_head;
-	if (!body) return INT2FIX(0);
-	n = body->nd_cnt;
-	if (body->nd_opt || body->nd_rest != -1)
-	    n = -n-1;
-	return INT2FIX(n);
-    }
+    n = rb_method_arity(data->body);
+    return INT2FIX(n);
 }
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread