Susumu Yata
null+****@clear*****
Thu Mar 3 13:43:13 JST 2016
Susumu Yata 2016-03-03 13:43:13 +0900 (Thu, 03 Mar 2016) New Revision: a6e2b28b73d66c8801b95b5e6d84d1cb8e27de73 https://github.com/groonga/groonga/commit/a6e2b28b73d66c8801b95b5e6d84d1cb8e27de73 Message: db: fix a crash bug of load GitHub: #493 Modified files: lib/db.c Modified: lib/db.c (+5 -6) =================================================================== --- lib/db.c 2016-03-03 12:36:54 +0900 (4b0dee8) +++ lib/db.c 2016-03-03 13:43:13 +0900 (bd592a9) @@ -12683,8 +12683,7 @@ bracket_close(grn_ctx *ctx, grn_loader *loader) } nvalues = values_len(ctx, value, value_end); if (!loader->table) { - loader->values_size = begin; - return; + goto exit; } switch (loader->table->header.type) { @@ -12718,7 +12717,7 @@ bracket_close(grn_ctx *ctx, grn_loader *loader) GRN_TEXT_VALUE(key_column_name), loader->key_offset, column_name_size, column_name, i); - return; + goto exit; } key_column_name = value; loader->key_offset = i; @@ -12729,7 +12728,7 @@ bracket_close(grn_ctx *ctx, grn_loader *loader) ERR(GRN_INVALID_ARGUMENT, "nonexistent column: <%.*s>", column_name_size, column_name); - return; + goto exit; } GRN_PTR_PUT(ctx, &loader->columns, col); } @@ -12784,8 +12783,7 @@ bracket_close(grn_ctx *ctx, grn_loader *loader) if (id == GRN_ID_NIL) { /* Target record is not available. */ - loader->values_size = begin; - return; + goto exit; } for (i = 0; i < nvalues; i++, value = values_next(ctx, value)) { @@ -12822,6 +12820,7 @@ bracket_close(grn_ctx *ctx, grn_loader *loader) grn_expr_exec(ctx, loader->each, 0); } loader->nrecords++; +exit: loader->values_size = begin; } -------------- next part -------------- HTML����������������������������... Download