[Groonga-commit] groonga/groonga at 6c789e5 [master] mruby: support arena while creating sis

アーカイブの一覧に戻る

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����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る