Skip to content

Commit

Permalink
ii: free memory on failure
Browse files Browse the repository at this point in the history
  • Loading branch information
s-yata committed Feb 23, 2016
1 parent 1c5b275 commit b4537a2
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions lib/ii.c
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit b4537a2

Please sign in to comment.