From ae23000c0e0e4f4af1b4462147d950549b3abdbe Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 19 Aug 2002 05:56:09 +0000 Subject: * array.c (sort_2): *a - *b may overflow. * array.c (ary_new): len*sizeof(VALUE) may be a positive value. * array.c (rb_ary_initialize): ditto. * object.c (rb_class_allocate_instance): move singleton class check from rb_obj_alloc(). * re.c (rb_reg_initialize): should not modify frozen Regexp. * ext/tcltklib/tcltklib.c (ip_init): allocation framework. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- object.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'object.c') diff --git a/object.c b/object.c index 13ae657ee1..7523b7aa3e 100644 --- a/object.c +++ b/object.c @@ -667,12 +667,7 @@ VALUE rb_obj_alloc(klass) VALUE klass; { - VALUE obj; - - if (FL_TEST(klass, FL_SINGLETON)) { - rb_raise(rb_eTypeError, "can't create instance of virtual class"); - } - obj = rb_funcall(klass, alloc, 0, 0); + VALUE obj = rb_funcall(klass, alloc, 0, 0); if (rb_obj_class(obj) != rb_class_real(klass)) { rb_raise(rb_eTypeError, "wrong instance allocation"); @@ -684,6 +679,9 @@ static VALUE rb_class_allocate_instance(klass) VALUE klass; { + if (FL_TEST(klass, FL_SINGLETON)) { + rb_raise(rb_eTypeError, "can't create instance of virtual class"); + } if (rb_frame_last_func() != alloc) { return rb_obj_alloc(klass); } -- cgit v1.2.3