From 48ad07eb41fa9d2f0990ec7addcb2be5a7317659 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 25 Dec 2013 09:48:57 +0900 Subject: zero copy str_new from static allocate irep --- src/load.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/load.c b/src/load.c index 30bd5d8be..247fce687 100644 --- a/src/load.c +++ b/src/load.c @@ -98,7 +98,12 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, uint32_t *len, mrb_bool a tt = *src++; //pool TT pool_data_len = bin_to_uint16(src); //pool data length src += sizeof(uint16_t); - s = mrb_str_new(mrb, (char *)src, pool_data_len); + if (alloc) { + s = mrb_str_new(mrb, (char *)src, pool_data_len); + } + else { + s = mrb_str_new_static(mrb, (char *)src, pool_data_len); + } src += pool_data_len; switch (tt) { //pool data case IREP_TT_FIXNUM: -- cgit v1.2.3