diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-08 16:19:13 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-08 16:19:13 +0000 |
commit | a8b4677b144e30ad764a108459c27102fa087826 (patch) | |
tree | 182a27977b2a9f04be832cda1e68b8b12f6be73b | |
parent | c19ebe04e6a7842b9e6986c3616be409c9491b35 (diff) | |
download | ruby-a8b4677b144e30ad764a108459c27102fa087826.tar.gz |
* marshal.c (r_object0): don't call user-defined initialize for
T_STRUCT objects.
* include/ruby/intern.h (rb_struct_initialize): declared.
* struct.c (rb_struct_initialize): export.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | include/ruby/intern.h | 1 | ||||
-rw-r--r-- | marshal.c | 2 | ||||
-rw-r--r-- | struct.c | 2 |
4 files changed, 12 insertions, 2 deletions
@@ -1,3 +1,12 @@ +Sun Sep 9 01:17:05 2007 Tanaka Akira <akr@fsij.org> + + * marshal.c (r_object0): don't call user-defined initialize for + T_STRUCT objects. + + * include/ruby/intern.h (rb_struct_initialize): declared. + + * struct.c (rb_struct_initialize): export. + Sat Sep 8 23:55:56 2007 Tanaka Akira <akr@fsij.org> * eval_method.ci (rb_get_alloc_func): new function to get allocation diff --git a/include/ruby/intern.h b/include/ruby/intern.h index ecfbe95a8a..7391845e2d 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -531,6 +531,7 @@ VALUE rb_str_length(VALUE); VALUE rb_struct_new(VALUE, ...); VALUE rb_struct_define(const char*, ...); VALUE rb_struct_alloc(VALUE, VALUE); +VALUE rb_struct_initialize(VALUE, VALUE); VALUE rb_struct_aref(VALUE, VALUE); VALUE rb_struct_aset(VALUE, VALUE, VALUE); VALUE rb_struct_getmember(VALUE, ID); @@ -1276,7 +1276,7 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod) } rb_ary_push(values, r_object(arg)); } - rb_obj_call_init(v, RARRAY_LEN(values), RARRAY_PTR(values)); + rb_struct_initialize(v, values); v = r_leave(v, arg); } break; @@ -300,7 +300,7 @@ rb_struct_s_def(int argc, VALUE *argv, VALUE klass) /* */ -static VALUE +VALUE rb_struct_initialize(VALUE self, VALUE values) { VALUE klass = rb_obj_class(self); |