mrb_state* mrb_open_allocf(mrb_allocf f) { mrb_state *mrb = (f)(NULL, NULL, sizeof(mrb_state)); memset(mrb, 0, sizeof(mrb_state)); mrb->allocf = f; mrb->current_white_part = MRB_GC_WHITE_A; mrb_init_heap(mrb); mrb_init_core(mrb); mrb_init_ext(mrb); return mrb; }
mrb_state* mrb_open_allocf(mrb_allocf f, void *ud) { mrb_state *mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state), ud); if (mrb == NULL) return NULL; memset(mrb, 0, sizeof(mrb_state)); mrb->ud = ud; mrb->allocf = f; mrb->current_white_part = MRB_GC_WHITE_A; mrb_init_heap(mrb); mrb_init_core(mrb); mrb_init_ext(mrb); return mrb; }