1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* eval_error.ci (get_backtrace): check the result more.

[ruby-dev:31261] [ruby-bugs-12398]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2007-07-19 10:24:17 +00:00
parent 09ce106ab3
commit a1c76bc3de
3 changed files with 14 additions and 7 deletions

View file

@ -1,3 +1,8 @@
Thu Jul 19 19:24:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval_error.ci (get_backtrace): check the result more.
[ruby-dev:31261] [ruby-bugs-12398]
Thu Jul 19 14:38:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org> Thu Jul 19 14:38:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* bignum.c (rb_big_lshift, rb_big_rshift): separated functions * bignum.c (rb_big_lshift, rb_big_rshift): separated functions

12
error.c
View file

@ -495,14 +495,14 @@ exc_inspect(VALUE exc)
static VALUE static VALUE
exc_backtrace(VALUE exc) exc_backtrace(VALUE exc)
{ {
ID bt = rb_intern("bt"); static ID bt;
if (!rb_ivar_defined(exc, bt)) return Qnil; if (!bt) bt = rb_intern("bt");
return rb_ivar_get(exc, bt); return rb_attr_get(exc, bt);
} }
static VALUE VALUE
check_backtrace(VALUE bt) rb_check_backtrace(VALUE bt)
{ {
long i; long i;
static const char *err = "backtrace must be Array of String"; static const char *err = "backtrace must be Array of String";
@ -536,7 +536,7 @@ check_backtrace(VALUE bt)
static VALUE static VALUE
exc_set_backtrace(VALUE exc, VALUE bt) exc_set_backtrace(VALUE exc, VALUE bt)
{ {
return rb_iv_set(exc, "bt", check_backtrace(bt)); return rb_iv_set(exc, "bt", rb_check_backtrace(bt));
} }
/* /*

View file

@ -66,6 +66,8 @@ error_pos(void)
} }
} }
VALUE rb_check_backtrace(VALUE);
static VALUE static VALUE
get_backtrace(VALUE info) get_backtrace(VALUE info)
{ {
@ -74,7 +76,7 @@ get_backtrace(VALUE info)
info = rb_funcall(info, rb_intern("backtrace"), 0); info = rb_funcall(info, rb_intern("backtrace"), 0);
if (NIL_P(info)) if (NIL_P(info))
return Qnil; return Qnil;
return rb_check_array_type(info); return rb_check_backtrace(info);
} }
static void static void