mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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:
parent
f50984366b
commit
f4ff7ccddf
4 changed files with 49 additions and 10 deletions
17
ChangeLog
17
ChangeLog
|
@ -11,6 +11,23 @@ Mon May 19 08:08:51 2003 Tadayoshi Funaba <tadf@dotrb.org>
|
||||||
|
|
||||||
* sample/cal.rb: ditto.
|
* 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>
|
Sat May 17 02:17:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
||||||
|
|
||||||
* lib/rational.rb (Integer::denominator): fixed typo.
|
* 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);
|
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
|
static VALUE
|
||||||
inspect_ensure(obj)
|
inspect_ensure(obj)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
{
|
{
|
||||||
VALUE inspect_tbl;
|
VALUE inspect_tbl;
|
||||||
|
|
||||||
inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
|
inspect_tbl = get_inspect_tbl(Qfalse);
|
||||||
rb_ary_pop(inspect_tbl);
|
if (!NIL_P(inspect_tbl)) {
|
||||||
|
rb_ary_pop(inspect_tbl);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -949,11 +971,7 @@ rb_protect_inspect(func, obj, arg)
|
||||||
VALUE inspect_tbl;
|
VALUE inspect_tbl;
|
||||||
VALUE id;
|
VALUE id;
|
||||||
|
|
||||||
inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
|
inspect_tbl = get_inspect_tbl(Qtrue);
|
||||||
if (NIL_P(inspect_tbl)) {
|
|
||||||
inspect_tbl = rb_ary_new();
|
|
||||||
rb_thread_local_aset(rb_thread_current(), inspect_key, inspect_tbl);
|
|
||||||
}
|
|
||||||
id = rb_obj_id(obj);
|
id = rb_obj_id(obj);
|
||||||
if (rb_ary_includes(inspect_tbl, id)) {
|
if (rb_ary_includes(inspect_tbl, id)) {
|
||||||
return (*func)(obj, arg);
|
return (*func)(obj, arg);
|
||||||
|
@ -972,7 +990,7 @@ rb_inspecting_p(obj)
|
||||||
{
|
{
|
||||||
VALUE inspect_tbl;
|
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;
|
if (NIL_P(inspect_tbl)) return Qfalse;
|
||||||
return rb_ary_includes(inspect_tbl, rb_obj_id(obj));
|
return rb_ary_includes(inspect_tbl, rb_obj_id(obj));
|
||||||
}
|
}
|
||||||
|
|
6
eval.c
6
eval.c
|
@ -1185,9 +1185,13 @@ ruby_init()
|
||||||
_macruby_init();
|
_macruby_init();
|
||||||
#endif
|
#endif
|
||||||
ruby_prog_init();
|
ruby_prog_init();
|
||||||
|
ALLOW_INTS;
|
||||||
}
|
}
|
||||||
POP_TAG();
|
POP_TAG();
|
||||||
if (state) error_print();
|
if (state) {
|
||||||
|
error_print();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
POP_SCOPE();
|
POP_SCOPE();
|
||||||
ruby_scope = top_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];
|
static rb_atomic_t trap_pending_list[NSIG];
|
||||||
rb_atomic_t rb_trap_pending;
|
rb_atomic_t rb_trap_pending;
|
||||||
rb_atomic_t rb_trap_immediate;
|
rb_atomic_t rb_trap_immediate;
|
||||||
int rb_prohibit_interrupt;
|
int rb_prohibit_interrupt = 1;
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_gc_mark_trap_list()
|
rb_gc_mark_trap_list()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue