Changeset: 654eb7761c3f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=654eb7761c3f Modified Files: gdk/gdk_cand.c Branch: linear-hashing Log Message:
Rearrange code to avoid goto. diffs (71 lines): diff --git a/gdk/gdk_cand.c b/gdk/gdk_cand.c --- a/gdk/gdk_cand.c +++ b/gdk/gdk_cand.c @@ -404,23 +404,6 @@ canditer_init(struct canditer *ci, BAT * ci->tpe = cand_dense; } switch (ci->tpe) { - case cand_dense: - case_cand_dense: - if (b != NULL) { - if (ci->seq + cnt <= b->hseqbase || - ci->seq >= b->hseqbase + BATcount(b)) { - ci->ncand = 0; - return 0; - } - if (b->hseqbase > ci->seq) { - cnt -= b->hseqbase - ci->seq; - ci->offset += b->hseqbase - ci->seq; - ci->seq = b->hseqbase; - } - if (ci->seq + cnt > b->hseqbase + BATcount(b)) - cnt = b->hseqbase + BATcount(b) - ci->seq; - } - break; case cand_materialized: if (b != NULL) { if (ci->oids[ci->noids - 1] < b->hseqbase) { @@ -491,11 +474,9 @@ canditer_init(struct canditer *ci, BAT * /* WARNING: don't reset ci->oids to NULL when setting * ci->tpe to cand_dense below: BATprojectchain will * fail */ - if (ci->noids == 0) { - ci->tpe = cand_dense; - goto case_cand_dense; - } - if (b != NULL) { + if (ci->noids > 0) { + if (b == NULL) + break; BUN p; p = binsearchcand(ci->oids, ci->noids - 1, b->hseqbase); if (p == ci->noids) { @@ -532,10 +513,25 @@ canditer_init(struct canditer *ci, BAT * while (ci->noids > 0 && ci->oids[ci->noids - 1] == ci->seq + cnt + ci->noids - 1) ci->noids--; - if (ci->noids == 0) { - ci->tpe = cand_dense; - goto case_cand_dense; + if (ci->noids > 0) + break; + } + ci->tpe = cand_dense; + /* fall through */ + case cand_dense: + if (b != NULL) { + if (ci->seq + cnt <= b->hseqbase || + ci->seq >= b->hseqbase + BATcount(b)) { + ci->ncand = 0; + return 0; } + if (b->hseqbase > ci->seq) { + cnt -= b->hseqbase - ci->seq; + ci->offset += b->hseqbase - ci->seq; + ci->seq = b->hseqbase; + } + if (ci->seq + cnt > b->hseqbase + BATcount(b)) + cnt = b->hseqbase + BATcount(b) - ci->seq; } break; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list