[#9445] thread.rb — m_seki@...

18 messages 2000/03/16
[#9446] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/17

[#9460] Re: thread.rb — m_seki@... 2000/03/21

[#9462] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/21

まつもと ゆきひろです

[#11281] Re: thread.rb — Masatoshi SEKI <m_seki@...> 2000/10/22

[#9498] timeout しない timeout — ARIMA Yasuhiro <fit0298@...>

有馬です。

20 messages 2000/03/26
[#9506] Re: timeout しない timeout — matz@... (Yukihiro Matsumoto) 2000/03/27

まつもと ゆきひろです

[#9509] Re: timeout しない timeout — gotoken@... (GOTO Kentaro) 2000/03/27

In message "[ruby-dev:9506] Re: timeout しない timeout"

[ruby-dev:9476] Re: [BUG] test ?f, *[]

From: Koji Arai <JCA02266@...>
Date: 2000-03-23 21:35:20 UTC
List: ruby-dev #9476
新井です。

>>> From: Koji Arai <JCA02266@nifty.ne.jp>
>>> Date: 24 Mar 2000 06:09:33 +0900
>>> Subject: [ruby-dev:9475] [BUG] test ?f, *[]

> 新井です。
> 
> ruby-1.4.4(1.5も)ですが、以下でSEGVします。

> ・ダイナミックローカル変数を使う
> ・NODE_ARGSCAT で、空配列を渡す
> 
> のが味噌のようです。

嘘でした。たまたま上の条件でSEGVするというだけで、
SEGVしないときもエラーメッセージが変です。

$ ruby -e 'test ?f'
-e:1:in `test': wrong argument type Object (expected String) (TypeError)
        from -e:1                   ^^^^^^

で、単純に引数の数チェックが甘かっただけのようです。


Index: file.c
===================================================================
RCS file: /home/cvs/ruby/file.c,v
retrieving revision 1.17
diff -u -p -u -r1.17 file.c
--- file.c	2000/03/17 08:58:11	1.17
+++ file.c	2000/03/23 21:31:18
@@ -1504,7 +1504,8 @@ test_check(n, argc, argv)
     int i;
 
     n+=1;
-    if (n < argc) rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, n);
+    if (argc < 2 || n < argc)
+	rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, n);
     for (i=1; i<n; i++) {
 	switch (TYPE(argv[i])) {
 	  case T_STRING:

In This Thread