summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-28 06:31:21 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-28 06:31:21 +0000
commit217bcffb740e65d228177b0ee5f8d2ba4714d418 (patch)
tree1cb605205c9486d3b3583cea02c4a62d9d15b62d
parentd80f9fe9245593b1cc4e568d123f0d25936962a0 (diff)
* string.c (rb_str_delete_bang): delete! should take at least 1
argument. * eval.c (ev_const_defined): check Object's constant if no current class is available (e.g. defining singleton class for Fixnums). * eval.c (rb_yield_0): should check based on rb_block_given_p() and rb_f_block_given_p(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog13
-rw-r--r--eval.c6
-rw-r--r--string.c3
3 files changed, 19 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 21879cb824..f9f0b92f82 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,24 @@
+Wed Feb 28 11:02:41 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_delete_bang): delete! should take at least 1
+ argument.
+
Tue Feb 27 16:38:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (ev_const_get): retrieve Object's caonstat if no current
class is available (e.g. defining singleton class for Fixnums).
+ * eval.c (ev_const_defined): check Object's constant if no current
+ class is available (e.g. defining singleton class for Fixnums).
+
* eval.c (proc_call): ignore block to `call' always, despite of
being orphan or not.
+Wed Feb 27 10:16:32 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_yield_0): should check based on rb_block_given_p()
+ and rb_f_block_given_p().
+
Mon Feb 26 16:20:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
* ruby.c (proc_options): call ruby_show_version() just once.
diff --git a/eval.c b/eval.c
index 26fe9b0af7..815ad6aa1f 100644
--- a/eval.c
+++ b/eval.c
@@ -1430,8 +1430,8 @@ ev_const_defined(cref, id)
while (cbase && cbase->nd_clss != rb_cObject) {
struct RClass *klass = RCLASS(cbase->nd_clss);
- if (klass->iv_tbl &&
- st_lookup(klass->iv_tbl, id, 0)) {
+ if (NIL_P(klass)) return rb_const_defined(rb_cObject, id);
+ if (klass->iv_tbl && st_lookup(klass->iv_tbl, id, 0)) {
return Qtrue;
}
cbase = cbase->nd_next;
@@ -3516,7 +3516,7 @@ rb_yield_0(val, self, klass, acheck)
int state;
static unsigned serial = 1;
- if (!ruby_frame->iter || !ruby_block) {
+ if (!(rb_block_given_p() || rb_f_block_given_p()) || !ruby_block) {
rb_raise(rb_eLocalJumpError, "yield called out of block");
}
diff --git a/string.c b/string.c
index af39f5bbbf..2cdcf26651 100644
--- a/string.c
+++ b/string.c
@@ -1972,6 +1972,9 @@ rb_str_delete_bang(argc, argv, str)
int init = 1;
int i;
+ if (argc < 1) {
+ rb_raise(rb_eArgError, "wrong # of arguments");
+ }
for (i=0; i<argc; i++) {
VALUE s = argv[i];