Commit a030446a authored by KOBAYASHI Shuji's avatar KOBAYASHI Shuji

Refine `mrb_alloca()`

* The allocated memory is guaranteed to be aligned for any data type (it was
  not guaranteed when string type is embed).
* Make allocation size exactly specified size (does not allocate space for a
  null byte).
parent bc22991a
...@@ -280,8 +280,9 @@ mrb_free(mrb_state *mrb, void *p) ...@@ -280,8 +280,9 @@ mrb_free(mrb_state *mrb, void *p)
MRB_API void* MRB_API void*
mrb_alloca(mrb_state *mrb, size_t size) mrb_alloca(mrb_state *mrb, size_t size)
{ {
mrb_value str = mrb_str_new(mrb, NULL, size); struct RString *s;
return RSTRING_PTR(str); s = (struct RString*)mrb_obj_alloc(mrb, MRB_TT_STRING, mrb->string_class);
return s->as.heap.ptr = (char*)mrb_malloc(mrb, size);
} }
static mrb_bool static mrb_bool
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment