[Groonga-commit] groonga/groonga at bf18022 [master] Simplify hash_args release code on error

Back to archive index

Kouhei Sutou null+****@clear*****
Sat Feb 20 18:42:29 JST 2016


Kouhei Sutou	2016-02-20 18:42:29 +0900 (Sat, 20 Feb 2016)

  New Revision: bf18022a605582f9f5b22d65005b59777947cf7d
  https://github.com/groonga/groonga/commit/bf18022a605582f9f5b22d65005b59777947cf7d

  Message:
    Simplify hash_args release code on error

  Modified files:
    lib/expr.c
    lib/grn_ecmascript.lemon

  Modified: lib/expr.c (+7 -0)
===================================================================
--- lib/expr.c    2016-02-20 18:36:27 +0900 (bb2d132)
+++ lib/expr.c    2016-02-20 18:42:29 +0900 (fb4f99d)
@@ -7584,6 +7584,13 @@ grn_expr_parse(grn_ctx *ctx, grn_obj *expr,
     GRN_OBJ_FIN(ctx, &efsi.column_stack);
     GRN_OBJ_FIN(ctx, &efsi.token_stack);
     GRN_OBJ_FIN(ctx, &efsi.buf);
+    if (efsi.hash_args) {
+      grn_obj *value;
+      GRN_HASH_EACH(ctx, efsi.hash_args, i, NULL, NULL, (void **)&value, {
+        GRN_OBJ_FIN(ctx, value);
+      });
+      grn_hash_close(ctx, efsi.hash_args);
+    }
   } else {
     ERR(GRN_INVALID_ARGUMENT, "variable is not defined correctly");
   }

  Modified: lib/grn_ecmascript.lemon (+0 -17)
===================================================================
--- lib/grn_ecmascript.lemon    2016-02-20 18:36:27 +0900 (8a1ac6c)
+++ lib/grn_ecmascript.lemon    2016-02-20 18:42:29 +0900 (1ae46cf)
@@ -30,13 +30,6 @@
       } else {
         GRN_TEXT_PUTC(ctx, &message, '|');
       }
-      if (efsi->hash_args) {
-        grn_obj *value;
-        GRN_HASH_EACH(ctx, efsi->hash_args, i, NULL, NULL, (void **)&value, {
-          GRN_OBJ_FIN(ctx, value);
-        });
-        grn_hash_close(efsi->ctx, efsi->hash_args);
-      }
       ERR(GRN_SYNTAX_ERROR, "Syntax error: <%.*s>",
           (int)GRN_TEXT_LEN(&message), GRN_TEXT_VALUE(&message));
       GRN_OBJ_FIN(ctx, &message);
@@ -429,27 +422,17 @@ property_name_and_value ::= property_name COLON assignment_expression. {
         GRN_OBJ_INIT(buf, value->header.type, 0, value->header.domain);
         GRN_TEXT_PUT(ctx, buf, GRN_TEXT_VALUE(value), GRN_TEXT_LEN(value));
       } else {
-        grn_obj *obj;
         ERR(GRN_INVALID_ARGUMENT,
             "duplicated property name: <%.*s>",
             (int)GRN_TEXT_LEN(property),
             GRN_TEXT_VALUE(property));
-        GRN_HASH_EACH(ctx, efsi->hash_args, i, NULL, NULL, (void **)&obj, {
-          GRN_OBJ_FIN(ctx, obj);
-        });
-        grn_hash_close(efsi->ctx, efsi->hash_args);
       }
       e->codes_curr -= 3;
     } else {
-      grn_obj *obj;
       ERR(GRN_NO_MEMORY_AVAILABLE,
           "failed to add a property to object literal: <%.*s>",
           (int)GRN_TEXT_LEN(property),
           GRN_TEXT_VALUE(property));
-      GRN_HASH_EACH(ctx, efsi->hash_args, i, NULL, NULL, (void **)&obj, {
-        GRN_OBJ_FIN(ctx, obj);
-      });
-      grn_hash_close(efsi->ctx, efsi->hash_args);
     }
   }
 }
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index