diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | eval.c | 6 | ||||
-rw-r--r-- | string.c | 3 |
3 files changed, 19 insertions, 3 deletions
@@ -1,11 +1,24 @@ +Wed Feb 28 11:02:41 2001 Yukihiro Matsumoto <[email protected]> + + * string.c (rb_str_delete_bang): delete! should take at least 1 + argument. + Tue Feb 27 16:38:15 2001 Yukihiro Matsumoto <[email protected]> * 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 <[email protected]> + + * 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 <[email protected]> * ruby.c (proc_options): call ruby_show_version() just once. @@ -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"); } @@ -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]; |