summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-08-12 07:39:12 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-08-12 07:39:12 +0000
commit1f99d95729fd18bf3dc98cf9eea62df6b8353e40 (patch)
treec6552503cdefea1749c7252d551911170c05e255 /object.c
parent66f8f8691b2f63428c2e0fbf95f794443ce89e18 (diff)
downloadruby-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.c12
1 files changed, 8 insertions, 4 deletions
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