From 525aa2dab68a6992bf0636357a673ae2adf599cc Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 15 Mar 2004 02:33:03 +0000 Subject: [PATCH] * eval.c (rb_yield_0): should not re-submit TAG_BREAK if this yield is not break destination. [ruby-dev:23197] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@5953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ bignum.c | 2 +- error.c | 3 +++ eval.c | 3 +++ io.c | 4 ++-- random.c | 2 +- signal.c | 2 +- string.c | 4 ++-- 8 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8a5bbdeaa8..53ac82d9ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Mar 15 07:39:13 2004 Yukihiro Matsumoto + + * eval.c (rb_yield_0): should not re-submit TAG_BREAK if this + yield is not break destination. [ruby-dev:23197] + Sat Mar 13 14:28:16 2004 Masatoshi SEKI * test/drb/test_drbssl.rb: rescue LoadError. (Barkport from main diff --git a/bignum.c b/bignum.c index 237ba96e86..a969fd2e0c 100644 --- a/bignum.c +++ b/bignum.c @@ -1583,7 +1583,7 @@ rb_big_pow(x, y) break; case T_FIXNUM: - yy = NUM2LONG(y); + yy = FIX2LONG(y); if (yy > 0) { VALUE z = x; diff --git a/error.c b/error.c index c6fb7b446c..a6c4952259 100644 --- a/error.c +++ b/error.c @@ -259,6 +259,9 @@ rb_check_type(x, t) else if (FIXNUM_P(x)) { etype = "Fixnum"; } + else if (SYMBOL_P(x)) { + etype = "Symbol"; + } else if (rb_special_const_p(x)) { etype = RSTRING(rb_obj_as_string(x))->ptr; } diff --git a/eval.c b/eval.c index 473c53f4cc..dba0641746 100644 --- a/eval.c +++ b/eval.c @@ -4739,6 +4739,9 @@ rb_yield_0(val, self, klass, flags, avalue) if (TAG_DST()) { result = prot_tag->retval; } + else { + lambda = Qtrue; /* just pass TAG_BREAK */ + } break; default: break; diff --git a/io.c b/io.c index f63dbcd120..d74e3906a4 100644 --- a/io.c +++ b/io.c @@ -2798,7 +2798,7 @@ rb_open_file(argc, argv, io) if (FIXNUM_P(vmode) || !NIL_P(perm)) { if (FIXNUM_P(vmode)) { - flags = NUM2INT(vmode); + flags = FIX2INT(vmode); } else { SafeStringValue(vmode); @@ -2866,7 +2866,7 @@ rb_io_s_sysopen(argc, argv) SafeStringValue(fname); if (NIL_P(vmode)) flags = O_RDONLY; - else if (FIXNUM_P(vmode)) flags = NUM2INT(vmode); + else if (FIXNUM_P(vmode)) flags = FIX2INT(vmode); else { SafeStringValue(vmode); flags = rb_io_mode_modenum(RSTRING(vmode)->ptr); diff --git a/random.c b/random.c index 9a843f2aff..a317aa5cc1 100644 --- a/random.c +++ b/random.c @@ -266,7 +266,7 @@ rb_f_rand(argc, argv, obj) vmax = rb_Integer(vmax); if (TYPE(vmax) == T_BIGNUM) goto bignum; case T_FIXNUM: - max = NUM2LONG(vmax); + max = FIX2LONG(vmax); break; } diff --git a/signal.c b/signal.c index 91e0478c32..bafaadd8bc 100644 --- a/signal.c +++ b/signal.c @@ -555,7 +555,7 @@ trap(arg) switch (TYPE(arg->sig)) { case T_FIXNUM: - sig = NUM2INT(arg->sig); + sig = FIX2INT(arg->sig); break; case T_SYMBOL: diff --git a/string.c b/string.c index 677a82eda9..3fb123be80 100644 --- a/string.c +++ b/string.c @@ -1692,7 +1692,7 @@ rb_str_aset(str, indx, val) switch (TYPE(indx)) { case T_FIXNUM: num_index: - idx = NUM2LONG(indx); + idx = FIX2LONG(indx); if (RSTRING(str)->len <= idx) { out_of_range: rb_raise(rb_eIndexError, "index %ld out of string", idx); @@ -1707,7 +1707,7 @@ rb_str_aset(str, indx, val) RSTRING(str)->len += 1; RESIZE_CAPA(str, RSTRING(str)->len); } - RSTRING(str)->ptr[idx] = NUM2INT(val) & 0xff; + RSTRING(str)->ptr[idx] = FIX2INT(val) & 0xff; } else { rb_str_splice(str, idx, 1, val);