diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-12-04 16:40:59 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-12-04 22:21:00 +0900 |
| commit | a030446a94fc18bd2b6881f697417df3f0ddb179 (patch) | |
| tree | d5298c35e448a615d6c7bd293647bdff5825ecba | |
| parent | bc22991ac3ec08fa9e48fc46e49e69115a386ed9 (diff) | |
| download | mruby-a030446a94fc18bd2b6881f697417df3f0ddb179.tar.gz mruby-a030446a94fc18bd2b6881f697417df3f0ddb179.zip | |
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).
| -rw-r--r-- | src/gc.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -280,8 +280,9 @@ mrb_free(mrb_state *mrb, void *p) MRB_API void* mrb_alloca(mrb_state *mrb, size_t size) { - mrb_value str = mrb_str_new(mrb, NULL, size); - return RSTRING_PTR(str); + struct RString *s; + 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 |
