aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-15 02:27:29 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-15 02:27:29 +0000
commit2fab242f668d719b319d155e3bfad2987117dd29 (patch)
tree551e5048d5359375ec562a5a2b8c425e189a2c87
parent5bf96101305c9113122fe32935088613da3c2c50 (diff)
downloadruby-2fab242f668d719b319d155e3bfad2987117dd29.tar.gz
* 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/trunk@5952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--bignum.c2
-rw-r--r--error.c3
-rw-r--r--eval.c3
-rw-r--r--io.c4
-rw-r--r--random.c2
-rw-r--r--signal.c2
-rw-r--r--string.c4
8 files changed, 18 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index a5ef7998d5..2b337827cd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,11 @@ Mon Mar 15 10:14:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SocketForwarder):
add do_not_reverse_lookup.
+Mon Mar 15 07:39:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): should not re-submit TAG_BREAK if this
+ yield is not break destination. [ruby-dev:23197]
+
Sun Mar 14 22:07:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_thread_raise): err at unstarted thread. (PR#1302)
diff --git a/bignum.c b/bignum.c
index 027384076d..f247d8f1a5 100644
--- a/bignum.c
+++ b/bignum.c
@@ -1599,7 +1599,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 50ff98f5ec..c0999f84c9 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 bcff81b03d..28f886bf8c 100644
--- a/eval.c
+++ b/eval.c
@@ -4729,6 +4729,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 018c74ce86..943afa6e51 100644
--- a/io.c
+++ b/io.c
@@ -2869,7 +2869,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);
@@ -2937,7 +2937,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 1807b8134a..b1ea3cd44a 100644
--- a/string.c
+++ b/string.c
@@ -1670,7 +1670,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);
@@ -1685,7 +1685,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);