diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-09-02 09:11:41 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-09-02 09:11:41 +0900 |
commit | ab63f6d8543903f177c46634f38e5428655f003b (patch) | |
tree | 2850cb5363edb40d68f8aeb88f60e89a4a4d4b84 /ext/-test- | |
parent | cb5a41c0a02962da838990853f5d6632d8abb92d (diff) |
Refined test [Bug #18140]
Diffstat (limited to 'ext/-test-')
-rw-r--r-- | ext/-test-/array/concat/to_ary_conact.c | 48 |
1 files changed, 9 insertions, 39 deletions
diff --git a/ext/-test-/array/concat/to_ary_conact.c b/ext/-test-/array/concat/to_ary_conact.c index a61659a66e..ec1fd321ce 100644 --- a/ext/-test-/array/concat/to_ary_conact.c +++ b/ext/-test-/array/concat/to_ary_conact.c @@ -1,63 +1,33 @@ #include "ruby.h" -VALUE cFoo; - -// Foo - -typedef struct { - int dummy; -} Foo; - -static void Foo_free(void* _self) { - xfree(_self); -} - -static rb_data_type_t Foo_type = { - "Foo", - {NULL, Foo_free, NULL }, - .flags = RUBY_TYPED_FREE_IMMEDIATELY, -}; - -static VALUE Foo_alloc(VALUE klass) { - Foo* _self = ALLOC(Foo); - return TypedData_Wrap_Struct(klass, &Foo_type, _self); -} - // Bar typedef struct { int dummy; } Bar; -static void Bar_free(void* _self) { - xfree(_self); -} - static rb_data_type_t Bar_type = { "Bar", - {NULL, Bar_free, NULL }, - .flags = RUBY_TYPED_FREE_IMMEDIATELY, + {NULL, RUBY_TYPED_DEFAULT_FREE, NULL }, }; -static VALUE Bar_alloc(VALUE klass) { - Bar* bar = ALLOC(Bar); - return TypedData_Wrap_Struct(klass, &Bar_type, bar); +static VALUE +Bar_alloc(VALUE klass) +{ + return TypedData_Wrap_Struct(klass, &Bar_type, NULL); } VALUE Bar_to_ary(VALUE _self) { VALUE ary = rb_ary_new2(2); - rb_ary_push(ary, Foo_alloc(cFoo)); - rb_ary_push(ary, Foo_alloc(cFoo)); - rb_ary_push(ary, Foo_alloc(cFoo)); + VALUE foo = rb_ary_new2(0); + rb_ary_push(ary, foo); + rb_ary_push(ary, foo); + rb_ary_push(ary, foo); return ary; } void Init_to_ary_concat() { VALUE mBug = rb_define_module("Bug"); - cFoo = rb_define_class_under(mBug, "Foo", rb_cObject); - rb_gc_register_address(&cFoo); - rb_define_alloc_func(cFoo, Foo_alloc); - VALUE bar = rb_define_class_under(mBug, "Bar", rb_cObject); rb_define_alloc_func(bar, Bar_alloc); rb_define_method(bar, "to_ary", Bar_to_ary, 0); |