diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-25 00:36:56 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-25 00:36:56 +0000 |
commit | b6beb8d943761fe1d754ba4de5ba360018b8e767 (patch) | |
tree | c85f5e2c5f57e0d24b6636c24cb70cb3f6027acd | |
parent | beb00bc582c0cbe6feb688026e469f824ee7ea44 (diff) | |
download | ruby-b6beb8d943761fe1d754ba4de5ba360018b8e767.tar.gz |
* eval.c (rb_method_missing): protect exception from within
"inspect". (ruby-bugs PR#1204)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | eval.c | 13 | ||||
-rw-r--r-- | version.h | 12 |
3 files changed, 19 insertions, 11 deletions
@@ -1,3 +1,8 @@ +Sat Oct 25 09:18:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org> + + * eval.c (rb_method_missing): protect exception from within + "inspect". (ruby-bugs PR#1204) + Fri Oct 24 23:26:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org> * hash.c (rb_hash_each): Hash#each should yield single value. @@ -4716,6 +4716,7 @@ rb_method_missing(argc, argv, obj) char *format = 0; char *desc = ""; NODE *cnode = ruby_current_node; + int state; if (argc == 0 || !SYMBOL_P(argv[0])) { rb_raise(rb_eArgError, "no id given"); @@ -4725,6 +4726,7 @@ rb_method_missing(argc, argv, obj) id = SYM2ID(argv[0]); + switch (TYPE(obj)) { case T_NIL: desc = "nil"; @@ -4736,16 +4738,17 @@ rb_method_missing(argc, argv, obj) desc = "false"; break; default: - if (rb_respond_to(obj, rb_intern("inspect"))) + PUSH_TAG(PROT_NONE); + if ((state = EXEC_TAG()) == 0) { d = rb_inspect(obj); - else + } + POP_TAG(); + if (!d || RSTRING(d)->len > 65) { d = rb_any_to_s(obj); + } break; } if (d) { - if (RSTRING(d)->len > 65) { - d = rb_any_to_s(obj); - } desc = RSTRING(d)->ptr; } @@ -1,11 +1,11 @@ -#define RUBY_VERSION "1.8.0" -#define RUBY_RELEASE_DATE "2003-10-24" -#define RUBY_VERSION_CODE 180 -#define RUBY_RELEASE_CODE 20031024 +#define RUBY_VERSION "1.8.1" +#define RUBY_RELEASE_DATE "2003-10-25" +#define RUBY_VERSION_CODE 181 +#define RUBY_RELEASE_CODE 20031025 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 -#define RUBY_VERSION_TEENY 0 +#define RUBY_VERSION_TEENY 1 #define RUBY_RELEASE_YEAR 2003 #define RUBY_RELEASE_MONTH 10 -#define RUBY_RELEASE_DAY 24 +#define RUBY_RELEASE_DAY 25 |