diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-09-24 16:58:51 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-09-24 16:58:51 +0000 |
commit | 08f84dcf44711d4ae397e01f1e402386622395a2 (patch) | |
tree | b33f125f0b9224721f25f7898ff9c4a17a029d53 /struct.c | |
parent | 7c29bcfb039de815d393299b05cb7b349f2301e7 (diff) | |
download | ruby-08f84dcf44711d4ae397e01f1e402386622395a2.tar.gz |
* struct.c (rb_struct_s_members): wrong call of struct_members.
[ruby-dev:24333]
* eval.c (proc_invoke): propagate DVAR_DONT_RECYCLE on termination
to avoid double call to rb_gc_force_recycle(). [ruby-dev:24311]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 20 |
1 files changed, 16 insertions, 4 deletions
@@ -34,10 +34,22 @@ rb_struct_iv_get(c, name) } static VALUE +struct_s_members(klass) + VALUE klass; +{ + VALUE members = rb_struct_iv_get(klass, "__members__"); + + if (NIL_P(members)) { + rb_bug("non-initialized struct"); + } + return members; +} + +static VALUE struct_members(s) VALUE s; { - VALUE members = rb_struct_iv_get(rb_obj_class(s), "__members__"); + VALUE members = struct_s_members(rb_obj_class(s)); if (NIL_P(members)) { rb_bug("non-initialized struct"); @@ -50,13 +62,13 @@ struct_members(s) } static VALUE -rb_struct_s_members(obj) - VALUE obj; +rb_struct_s_members(klass) + VALUE klass; { VALUE members, ary; VALUE *p, *pend; - members = struct_members(obj); + members = struct_s_members(klass); ary = rb_ary_new2(RARRAY(members)->len); p = RARRAY(members)->ptr; pend = p + RARRAY(members)->len; while (p < pend) { |