Kouhei Sutou
null+****@clear*****
Mon Oct 17 23:14:33 JST 2016
Kouhei Sutou 2016-10-17 23:14:33 +0900 (Mon, 17 Oct 2016) New Revision: 7d32491e824e70a7193e6847a37beab76c2a5b21 https://github.com/groonga/groonga/commit/7d32491e824e70a7193e6847a37beab76c2a5b21 Message: ii: fix unexpected "invalid cursor error" CHUNK_USED flag is missing when min skip is used. Error log: [ii][cursor][heap][push] invalid cursor: %p https://gitter.im/groonga/ja?at=57f2ff87d45d7f0f525e2216 Reported by torinky. Thanks!!! Modified files: lib/ii.c Modified: lib/ii.c (+7 -2) =================================================================== --- lib/ii.c 2016-10-17 19:08:20 +0900 (9523cf7) +++ lib/ii.c 2016-10-17 23:14:33 +0900 (e609e92) @@ -4957,16 +4957,21 @@ grn_ii_cursor_set_min(grn_ctx *ctx, grn_ii_cursor *c, grn_id min) } if (skip_chunk > c->curr_chunk) { uint32_t old_chunk = c->curr_chunk; + grn_bool old_chunk_used = (c->stat & CHUNK_USED); c->pc.rid = rid; c->pc.rest = 0; c->prev_chunk_rid = rid - c->cinfo[skip_chunk - 1].dgap; c->curr_chunk = skip_chunk; c->crp = c->cdp + c->cdf; + c->stat |= CHUNK_USED; GRN_LOG(ctx, GRN_LOG_DEBUG, - "[ii][cursor][min] skip: %p: min(%u->%u): chunk(%u->%u)", + "[ii][cursor][min] skip: %p: min(%u->%u): chunk(%u->%u): " + "chunk-used(%s->%s)", c, old_min, min, - old_chunk, c->curr_chunk); + old_chunk, c->curr_chunk, + old_chunk_used ? "true" : "false", + (c->stat & CHUNK_USED) ? "true" : "false"); } } } -------------- next part -------------- HTML����������������������������...Download