зеркало из https://github.com/github/ruby.git
* array.c (get_inspect_tbl): check whether inspect_tbl value is a
valid array. (ruby-bugs-ja PR#65) * array.c (inspect_ensure,rb_protect_inspect,rb_inspecting_p): use get_inspect_tbl(). * eval.c (rb_f_abort): call exit(1) if exception is raised. This patch was made by Nobuyoshi Nakada <nobu.nokada@softhome.net> on 2002-05-30. (ruby-bugs-ja PR#236) * signal.c: disable Ruby's interrupt handler at the beginning. (ruby-bugs-ja PR#236) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
f50984366b
Коммит
f4ff7ccddf
17
ChangeLog
17
ChangeLog
|
@ -11,6 +11,23 @@ Mon May 19 08:08:51 2003 Tadayoshi Funaba <tadf@dotrb.org>
|
|||
|
||||
* sample/cal.rb: ditto.
|
||||
|
||||
Sat May 17 12:02:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* array.c (get_inspect_tbl): check whether inspect_tbl value is a
|
||||
valid array. (ruby-bugs-ja PR#65)
|
||||
|
||||
* array.c (inspect_ensure,rb_protect_inspect,rb_inspecting_p):
|
||||
use get_inspect_tbl().
|
||||
|
||||
Sat May 17 11:50:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* eval.c (rb_f_abort): call exit(1) if exception is raised. This
|
||||
patch was made by Nobuyoshi Nakada <nobu.nokada@softhome.net> on
|
||||
2002-05-30. (ruby-bugs-ja PR#236)
|
||||
|
||||
* signal.c: disable Ruby's interrupt handler at the beginning.
|
||||
(ruby-bugs-ja PR#236)
|
||||
|
||||
Sat May 17 02:17:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
||||
|
||||
* lib/rational.rb (Integer::denominator): fixed typo.
|
||||
|
|
34
array.c
34
array.c
|
@ -929,14 +929,36 @@ inspect_call(arg)
|
|||
return (*arg->func)(arg->arg1, arg->arg2);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
get_inspect_tbl(create)
|
||||
int create;
|
||||
{
|
||||
VALUE inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
|
||||
|
||||
if (create && NIL_P(inspect_tbl)) {
|
||||
tbl_init:
|
||||
inspect_tbl = rb_ary_new();
|
||||
rb_thread_local_aset(rb_thread_current(), inspect_key, inspect_tbl);
|
||||
}
|
||||
else if (TYPE(inspect_tbl) != T_ARRAY) {
|
||||
rb_warn("invalid inspect_tbl value");
|
||||
if (create) goto tbl_init;
|
||||
rb_thread_local_aset(rb_thread_current(), inspect_key, Qnil);
|
||||
return Qnil;
|
||||
}
|
||||
return inspect_tbl;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
inspect_ensure(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
VALUE inspect_tbl;
|
||||
|
||||
inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
|
||||
rb_ary_pop(inspect_tbl);
|
||||
inspect_tbl = get_inspect_tbl(Qfalse);
|
||||
if (!NIL_P(inspect_tbl)) {
|
||||
rb_ary_pop(inspect_tbl);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -949,11 +971,7 @@ rb_protect_inspect(func, obj, arg)
|
|||
VALUE inspect_tbl;
|
||||
VALUE id;
|
||||
|
||||
inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
|
||||
if (NIL_P(inspect_tbl)) {
|
||||
inspect_tbl = rb_ary_new();
|
||||
rb_thread_local_aset(rb_thread_current(), inspect_key, inspect_tbl);
|
||||
}
|
||||
inspect_tbl = get_inspect_tbl(Qtrue);
|
||||
id = rb_obj_id(obj);
|
||||
if (rb_ary_includes(inspect_tbl, id)) {
|
||||
return (*func)(obj, arg);
|
||||
|
@ -972,7 +990,7 @@ rb_inspecting_p(obj)
|
|||
{
|
||||
VALUE inspect_tbl;
|
||||
|
||||
inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
|
||||
inspect_tbl = get_inspect_tbl(Qfalse);
|
||||
if (NIL_P(inspect_tbl)) return Qfalse;
|
||||
return rb_ary_includes(inspect_tbl, rb_obj_id(obj));
|
||||
}
|
||||
|
|
6
eval.c
6
eval.c
|
@ -1185,9 +1185,13 @@ ruby_init()
|
|||
_macruby_init();
|
||||
#endif
|
||||
ruby_prog_init();
|
||||
ALLOW_INTS;
|
||||
}
|
||||
POP_TAG();
|
||||
if (state) error_print();
|
||||
if (state) {
|
||||
error_print();
|
||||
exit(1);
|
||||
}
|
||||
POP_SCOPE();
|
||||
ruby_scope = top_scope;
|
||||
}
|
||||
|
|
2
signal.c
2
signal.c
|
@ -271,7 +271,7 @@ static VALUE trap_list[NSIG];
|
|||
static rb_atomic_t trap_pending_list[NSIG];
|
||||
rb_atomic_t rb_trap_pending;
|
||||
rb_atomic_t rb_trap_immediate;
|
||||
int rb_prohibit_interrupt;
|
||||
int rb_prohibit_interrupt = 1;
|
||||
|
||||
void
|
||||
rb_gc_mark_trap_list()
|
||||
|
|
Загрузка…
Ссылка в новой задаче