Kouhei Sutou
null+****@clear*****
Sat Aug 9 23:34:27 JST 2014
Kouhei Sutou 2014-08-09 23:34:27 +0900 (Sat, 09 Aug 2014) New Revision: 6c789e5df39bb9a749a274985bb06074f02c9c0a https://github.com/groonga/groonga/commit/6c789e5df39bb9a749a274985bb06074f02c9c0a Message: mruby: support arena while creating sis Modified files: lib/mrb/mrb_expr.c Modified: lib/mrb/mrb_expr.c (+8 -2) =================================================================== --- lib/mrb/mrb_expr.c 2014-08-09 23:01:39 +0900 (286047d) +++ lib/mrb/mrb_expr.c 2014-08-09 23:34:27 +0900 (f3e582b) @@ -388,8 +388,11 @@ grn_mrb_scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, mrb_state *mrb = data->state; mrb_value mrb_expression; mrb_value mrb_sis; - scan_info **sis; + scan_info **sis = NULL; int i; + int arena_index; + + arena_index = mrb_gc_arena_save(mrb); mrb_expression = grn_mrb_value_from_grn_obj(mrb, expr); mrb_sis = mrb_funcall(mrb, mrb_expression, "build_scan_info", 2, @@ -397,7 +400,7 @@ grn_mrb_scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, mrb_fixnum_value(size)); if (mrb_nil_p(mrb_sis)) { - return NULL; + goto exit; } *n = RARRAY_LEN(mrb_sis); @@ -416,6 +419,9 @@ grn_mrb_scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, sis[i] = si; } +exit: + mrb_gc_arena_restore(mrb, arena_index); + return sis; } #endif -------------- next part -------------- HTML����������������������������...ダウンロード