diff --git a/mrbgems/mruby-array-ext/src/array.c b/mrbgems/mruby-array-ext/src/array.c index 9e666fb63..41ed3612d 100644 --- a/mrbgems/mruby-array-ext/src/array.c +++ b/mrbgems/mruby-array-ext/src/array.c @@ -1310,13 +1310,11 @@ ary_combination_init(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "ib", &n, &permutation); - /* prepare objects in first to avoid memory leaks caused by NoMemoryError exceptions */ - struct RData *d = mrb_data_object_alloc(mrb, mrb->object_class, NULL, NULL); + struct RData *d; + struct mrb_combination_state *state; + Data_Make_Struct(mrb, mrb->object_class, struct mrb_combination_state, + &mrb_combination_state_type, state, d); - struct mrb_combination_state *state = (struct mrb_combination_state*)mrb_malloc(mrb, sizeof(*state)); - d->data = state; - d->type = &mrb_combination_state_type; - state->indices = NULL; state->n = n; state->array_size = RARRAY_LEN(self); state->permutation = permutation;