summaryrefslogtreecommitdiff
path: root/struct.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-04-02 10:03:54 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-04-02 10:03:54 +0000
commitb6fe3dae4de7002c2f58bc9cfb993033dff7927d (patch)
treeb017b82c48b45ae98f3ed92acb3863372ed9d77f /struct.c
parenta1d8147e4419d81cd93c664b85f7062c89101c87 (diff)
call initialize
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@149 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'struct.c')
-rw-r--r--struct.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/struct.c b/struct.c
index 1819c3c1dc..6d31896d37 100644
--- a/struct.c
+++ b/struct.c
@@ -185,6 +185,7 @@ struct_s_def(argc, argv)
struct RString *name;
struct RArray *rest;
int i;
+ VALUE st;
rb_scan_args(argc, argv, "1*", &name, &rest);
Check_Type(name, T_STRING);
@@ -192,7 +193,10 @@ struct_s_def(argc, argv)
ID id = rb_to_id(rest->ptr[i]);
rest->ptr[i] = INT2FIX(id);
}
- return make_struct(name, rest);
+ st = make_struct(name, rest);
+ obj_call_init((VALUE)st);
+
+ return st;
}
VALUE
@@ -215,6 +219,7 @@ struct_alloc(klass, values)
st->len = n;
MEMCPY(st->ptr, RARRAY(values)->ptr, VALUE, RARRAY(values)->len);
memclear(st->ptr+RARRAY(values)->len, n - RARRAY(values)->len);
+ obj_call_init((VALUE)st);
return (VALUE)st;
}