Kouhei Sutou
null+****@clear*****
Mon Dec 7 16:43:21 JST 2015
Kouhei Sutou 2015-12-07 16:43:21 +0900 (Mon, 07 Dec 2015) New Revision: 1b4e98fd14f3bec7e49f69b16986351c7b6c2dd4 https://github.com/groonga/groonga/commit/1b4e98fd14f3bec7e49f69b16986351c7b6c2dd4 Message: ii: add missing rc checks Modified files: lib/ii.c Modified: lib/ii.c (+18 -5) =================================================================== --- lib/ii.c 2015-12-07 15:51:23 +0900 (cabc760) +++ lib/ii.c 2015-12-07 16:43:21 +0900 (e7eb9af) @@ -2524,16 +2524,20 @@ typedef struct { if (cid.rid) {\ if (cid.rid < bid.rid) {\ PUTNEXTC();\ + if (rc) { break; }\ } else {\ if (bid.rid < cid.rid) {\ PUTNEXTB();\ + if (rc) { break; }\ } else {\ if (bid.sid) {\ if (cid.sid < bid.sid) {\ PUTNEXTC();\ + if (rc) { break; }\ } else {\ if (bid.sid == cid.sid) { GETNEXTC(); }\ PUTNEXTB();\ + if (rc) { break; }\ }\ } else {\ GETNEXTC();\ @@ -2542,10 +2546,12 @@ typedef struct { }\ } else {\ PUTNEXTB();\ + if (rc) { break; }\ }\ } else {\ if (cid.rid) {\ PUTNEXTC();\ + if (rc) { break; }\ } else {\ break;\ }\ @@ -2629,11 +2635,13 @@ chunk_merge(grn_ctx *ctx, grn_ii *ii, buffer *sb, buffer_term *bt, } GETNEXTC(); MERGE_BC(bid.rid <= rid || cid.rid); - *sbpp = sbp; - *nextbp = nextb; - *bidp = bid; - GRN_ASSERT(posp < dv[ii->n_elements].data); - ndf = ridp - dv[0].data; + if (!rc) { + *sbpp = sbp; + *nextbp = nextb; + *bidp = bid; + GRN_ASSERT(posp < dv[ii->n_elements].data); + ndf = ridp - dv[0].data; + } } datavec_fin(ctx, rdv); grn_io_win_unmap(&sw); @@ -2828,6 +2836,11 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h, } GETNEXTC(); MERGE_BC(1); + if (rc) { + datavec_fin(ctx, dv); + datavec_fin(ctx, rdv); + return rc; + } GRN_ASSERT(posp < dv[ii->n_elements].data); ndf = ridp - dv[0].data; /* -------------- next part -------------- HTML����������������������������... Download