diff options
| -rw-r--r-- | mrbgems/mruby-string-utf8/src/string.c | 4 |
1 files changed, 4 insertions, 0 deletions
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; |
