Susumu Yata
null+****@clear*****
Mon Feb 22 15:50:41 JST 2016
Susumu Yata 2016-02-22 15:50:41 +0900 (Mon, 22 Feb 2016) New Revision: b4537a2a83f79ada9588fe2eccf40012a487786e https://github.com/groonga/groonga/commit/b4537a2a83f79ada9588fe2eccf40012a487786e Message: ii: free memory on failure Modified files: lib/ii.c Modified: lib/ii.c (+4 -2) =================================================================== --- lib/ii.c 2016-02-22 15:43:46 +0900 (c31ea31) +++ lib/ii.c 2016-02-22 15:50:41 +0900 (6094edc) @@ -2888,6 +2888,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h, rc = chunk_merge(ctx, ii, sb, bt, &cinfo[i], crid, dv, &nextb, &sbp, &bid, &balance); if (rc) { + if (cinfo) { GRN_FREE(cinfo); } datavec_fin(ctx, dv); datavec_fin(ctx, rdv); return rc; @@ -2914,6 +2915,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h, snp = rdv[j].data; } if ((rc = datavec_reset(ctx, dv, ii->n_elements, sdf + S_SEGMENT, size))) { + if (cinfo) { GRN_FREE(cinfo); } datavec_fin(ctx, dv); datavec_fin(ctx, rdv); return rc; @@ -2931,7 +2933,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h, GETNEXTC(); MERGE_BC(1); if (rc) { - // FIXME: cinfo may not be freed. + if (cinfo) { GRN_FREE(cinfo); } datavec_fin(ctx, dv); datavec_fin(ctx, rdv); return rc; @@ -7861,7 +7863,7 @@ grn_ii_buffer_flush(grn_ctx *ctx, grn_ii_buffer *ii_buffer) ERR(GRN_INPUT_OUTPUT_ERROR, "write returned %" GRN_FMT_LLD " != %" GRN_FMT_LLU, (long long int)r, (unsigned long long int)encsize); - // FIXME: outbuf may not be freed. + GRN_FREE(outbuf); return; } ii_buffer->filepos += r; -------------- next part -------------- HTML����������������������������... Download