susumu.yata
null+****@clear*****
Thu Sep 17 18:20:09 JST 2015
susumu.yata 2015-09-17 18:20:09 +0900 (Thu, 17 Sep 2015) New Revision: 572d116264664a6d7932ac631176a64bbec41d23 https://github.com/groonga/groonga/commit/572d116264664a6d7932ac631176a64bbec41d23 Message: grn_ts: add a stack to grn_ts_expr_parser GitHub: #400 Modified files: lib/ts.c Modified: lib/ts.c (+7 -0) =================================================================== --- lib/ts.c 2015-09-17 18:10:08 +0900 (9f7e0a9) +++ lib/ts.c 2015-09-17 18:20:09 +0900 (6cc4fe5) @@ -3856,6 +3856,9 @@ typedef struct { grn_ts_expr_token **tokens; /* Tokens. */ size_t n_tokens; /* Number of tokens. */ size_t max_n_tokens; /* Max. number (capacity) of tokens. */ + grn_ts_expr_token **stack; /* Token stack. */ + size_t stack_depth; /* Token stack's current depth. */ + size_t stack_size; /* Token stack's size (capacity). */ } grn_ts_expr_parser; #define GRN_TS_EXPR_TOKEN_INIT(TYPE)\ @@ -4051,11 +4054,15 @@ grn_ts_expr_parser_init(grn_ctx *ctx, grn_ts_expr *expr, memset(parser, 0, sizeof(*parser)); parser->expr = expr; parser->tokens = NULL; + parser->stack = NULL; } /* grn_ts_expr_parser_fin() finalizes a parser. */ static void grn_ts_expr_parser_fin(grn_ctx *ctx, grn_ts_expr_parser *parser) { + if (parser->stack) { + GRN_FREE(parser->stack); + } if (parser->tokens) { size_t i; for (i = 0; i < parser->n_tokens; i++) { -------------- next part -------------- HTML����������������������������...Download