From 5410b9c46c53cc5f5f59a67aaefcf3d639baa63d Mon Sep 17 00:00:00 2001 From: mattn Date: Wed, 4 Jun 2014 10:20:51 +0900 Subject: arena save/restore --- mrbgems/mruby-string-utf8/src/string.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'mrbgems/mruby-string-utf8/src/string.c') diff --git a/mrbgems/mruby-string-utf8/src/string.c b/mrbgems/mruby-string-utf8/src/string.c index c8934d241..e47d6a725 100644 --- a/mrbgems/mruby-string-utf8/src/string.c +++ b/mrbgems/mruby-string-utf8/src/string.c @@ -695,8 +695,10 @@ mrb_str_chars(mrb_state *mrb, mrb_value self) return self; } while (p < e) { + int ai = mrb_gc_arena_save(mrb); mrb_int len = utf8len((unsigned char*) p); mrb_ary_push(mrb, result, mrb_str_new(mrb, p, len)); + mrb_gc_arena_restore(mrb, ai); p += len; } return result; @@ -725,8 +727,10 @@ mrb_str_codepoints(mrb_state *mrb, mrb_value self) return self; } while (p < e) { + int ai = mrb_gc_arena_save(mrb); mrb_int len = utf8len((unsigned char*) p); mrb_ary_push(mrb, result, mrb_fixnum_value(utf8code((unsigned char*) p))); + mrb_gc_arena_restore(mrb, ai); p += len; } return result; -- cgit v1.2.3