diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-08-12 07:39:12 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-08-12 07:39:12 +0000 |
commit | 1f99d95729fd18bf3dc98cf9eea62df6b8353e40 (patch) | |
tree | c6552503cdefea1749c7252d551911170c05e255 /object.c | |
parent | 66f8f8691b2f63428c2e0fbf95f794443ce89e18 (diff) | |
download | ruby-1f99d95729fd18bf3dc98cf9eea62df6b8353e40.tar.gz |
* 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
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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 |