Skip to content

Commit e33d326

Browse files
committed
Fixed pointer cast error and forgot to free
1 parent 55d94e9 commit e33d326

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/cfunc.c

+1
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ mrb_mruby_cfunc_gem_init(mrb_state* mrb)
4949
void
5050
mrb_mruby_cfunc_gem_final(mrb_state* mrb)
5151
{
52+
mrb_free(mrb, cfunc_state(mrb, NULL));
5253
}

src/cfunc_rubyvm.c

+6-3
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,11 @@ struct task_arg* mrb_value_to_task_arg(mrb_state *mrb, mrb_value v)
7979

8080
case MRB_TT_SYMBOL:
8181
{
82-
const char* name = mrb_sym2name_len(mrb, v.value.sym, &arg->value.string.len);
83-
arg->value.string.ptr = mrb_malloc(mrb, arg->value.string.len+1);
84-
memcpy(arg->value.string.ptr, name, arg->value.string.len+1);
82+
size_t len;
83+
const char* name = mrb_sym2name_len(mrb, v.value.sym, &len);
84+
arg->value.string.len = len;
85+
arg->value.string.ptr = mrb_malloc(mrb, len + 1);
86+
memcpy(arg->value.string.ptr, name, len + 1);
8587
}
8688
break;
8789

@@ -109,6 +111,7 @@ struct task_arg* mrb_value_to_task_arg(mrb_state *mrb, mrb_value v)
109111
break;
110112

111113
default:
114+
mrb_free(mrb, arg);
112115
mrb_raise(mrb, E_TYPE_ERROR, "cannot pass to other RubyVM");
113116
break;
114117
}

0 commit comments

Comments
 (0)