* eval.c (recursive_pop): raise TypeError instead of fatal error.

fixed: [ruby-dev:25843]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2005-03-13 13:19:28 +00:00
Родитель 2bc0405d1c
Коммит 28b1db091d
2 изменённых файлов: 18 добавлений и 8 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Sun Mar 13 22:19:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (recursive_pop): raise TypeError instead of fatal error.
fixed: [ruby-dev:25843]
Sun Mar 13 10:09:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> Sun Mar 13 10:09:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* test/rinda/test_rinda.rb: remove test_gc. [ruby-dev:25871] * test/rinda/test_rinda.rb: remove test_gc. [ruby-dev:25871]
@ -25,10 +30,10 @@ Thu Mar 10 19:10:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/tkrttimer.rb: sample of TkRTTimer class * ext/tk/sample/tkrttimer.rb: sample of TkRTTimer class
* ext/tk/lib/tk/textmark.rb: move TkTextMark#+ and TkTextMark#- to * ext/tk/lib/tk/textmark.rb: move TkTextMark#+ and TkTextMark#- to
TkText::IndexModMethods TkText::IndexModMethods
* ext/tk/lib/tk/text.rb: improve TkTextMark#+ and TkTextMark#-, and * ext/tk/lib/tk/text.rb: improve TkTextMark#+ and TkTextMark#-, and
add them to TkText::IndexModMethods module add them to TkText::IndexModMethods module
* ext/tk/sample/tktextio.rb: add test part of "seek by text index * ext/tk/sample/tktextio.rb: add test part of "seek by text index
@ -49,7 +54,7 @@ Wed Mar 9 19:42:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
- SSLContext#tmp_dh_callback is called in key exchange with DH - SSLContext#tmp_dh_callback is called in key exchange with DH
algorithm. it must return an OpenSSL::PKey::DH object. algorithm. it must return an OpenSSL::PKey::DH object.
* ext/openssl/ossl_ssl.c: * ext/openssl/ossl_ssl.c:
(ossl_sslctx_set_ciphers): ignore the argument if it's nil. (ossl_sslctx_set_ciphers): ignore the argument if it's nil.
(ossl_start_ssl, ossl_ssl_write): call rb_sys_fail if errno isn't 0. (ossl_start_ssl, ossl_ssl_write): call rb_sys_fail if errno isn't 0.
[ruby-dev:25831] [ruby-dev:25831]
@ -97,7 +102,7 @@ Tue Mar 8 12:36:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
Tue Mar 8 10:48:53 2005 NAKAMURA Usaku <usa@ruby-lang.org> Tue Mar 8 10:48:53 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* eval.c (rb_exec_recursive): declaration should precede statements * eval.c (rb_exec_recursive): declaration should precede statements
before C99. before C99.
Tue Mar 8 10:05:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org> Tue Mar 8 10:05:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
@ -114,7 +119,7 @@ Tue Mar 8 01:19:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
Mon Mar 7 21:29:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org> Mon Mar 7 21:29:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/server.rb (WEBrick::GenericServer#start): should * lib/webrick/server.rb (WEBrick::GenericServer#start): should
restore @token if accept failure. suggested by Dominique Brezinski. restore @token if accept failure. suggested by Dominique Brezinski.
[ruby-core:04518] [ruby-core:04518]

11
eval.c
Просмотреть файл

@ -4633,7 +4633,6 @@ break_jump(retval)
static VALUE bmcall _((VALUE, VALUE)); static VALUE bmcall _((VALUE, VALUE));
static int method_arity _((VALUE)); static int method_arity _((VALUE));
/*:nodoc:*/
static VALUE static VALUE
rb_yield_0(val, self, klass, flags, avalue) rb_yield_0(val, self, klass, flags, avalue)
VALUE val, self, klass; /* OK */ VALUE val, self, klass; /* OK */
@ -13039,11 +13038,17 @@ recursive_pop()
sym = ID2SYM(ruby_frame->this_func); sym = ID2SYM(ruby_frame->this_func);
if (NIL_P(hash) || TYPE(hash) != T_HASH) { if (NIL_P(hash) || TYPE(hash) != T_HASH) {
rb_bug("invalid inspect_tbl hash"); VALUE symname = rb_inspect(sym);
VALUE thrname = rb_inspect(rb_thread_current());
rb_raise(rb_eTypeError, "invalid inspect_tbl hash for %s in %s",
StringValuePtr(symname), StringValuePtr(thrname));
} }
list = rb_hash_aref(hash, sym); list = rb_hash_aref(hash, sym);
if (NIL_P(list) || TYPE(list) != T_ARRAY) { if (NIL_P(list) || TYPE(list) != T_ARRAY) {
rb_bug("invalid inspect_tbl list"); VALUE symname = rb_inspect(sym);
VALUE thrname = rb_inspect(rb_thread_current());
rb_raise(rb_eTypeError, "invalid inspect_tbl list for %s in %s",
StringValuePtr(symname), StringValuePtr(thrname));
} }
rb_ary_pop(list); rb_ary_pop(list);
} }