From 1f99d95729fd18bf3dc98cf9eea62df6b8353e40 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 12 Aug 2002 07:39:12 +0000 Subject: * bignum.c (rb_big_cmp): use dbl2big() for Floats, instead of big2dbl(). * bignum.c (Init_Bignum): rb_big_zero_p() removed. There may be Bignum zero. * eval.c (rb_call0): new argument added for original method name. preserve original method name in frame->orig_func. * eval.c (is_defined): use frame->orig_func, not last_func. * eval.c (rb_eval): ditto. * eval.c (method_call): supply data->oid also to rb_call0(). * object.c (rb_class_allocate_instance): call rb_obj_alloc() when called from alias, thus invoke original "allocate". * eval.c (remove_method): removing allocate from classes should cause NameError. * hash.c (rb_hash_equal): should check default values. * ext/socket/socket.c (s_recvfrom): update RSTRING len. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- object.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'object.c') diff --git a/object.c b/object.c index 6b6f1b5abb..13ae657ee1 100644 --- a/object.c +++ b/object.c @@ -684,10 +684,14 @@ static VALUE rb_class_allocate_instance(klass) VALUE klass; { - NEWOBJ(obj, struct RObject); - OBJSETUP(obj, klass, T_OBJECT); - - return (VALUE)obj; + if (rb_frame_last_func() != alloc) { + return rb_obj_alloc(klass); + } + else { + NEWOBJ(obj, struct RObject); + OBJSETUP(obj, klass, T_OBJECT); + return (VALUE)obj; + } } VALUE -- cgit v1.2.3