Changeset: 84a66f61f8fe for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84a66f61f8fe Modified Files: gdk/gdk_select.c Branch: default Log Message:
fixed off-by-one bug in imprints code:
Other than the scan select code, the imprints select code
had cursor "p" "run ahead", which resulted in an off-by-one
error when calculating the maximum required capacity of the
result BAT.
Fixed by aligning the use of cursor "p" in the imprints
select code with the ways it's used in the scan select
code.
diffs (43 lines):
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -186,26 +186,26 @@ do {
\
e = i+limit-pr_off; \
if (im[icnt] & mask) { \
if ((im[icnt] & ~innermask) == 0) { \
- while (o < e && p <= q) { \
+ while (o < e && p < q) { \
v = src[o]; \
ADD; \
cnt++; \
+ p++; \
CAND; \
- p++; \
} \
} else { \
- while (o < e && p <= q) { \
+ while (o < e && p < q) { \
v = src[o]; \
ADD; \
cnt += (TEST); \
+ p++; \
CAND; \
- p++; \
} \
} \
} else { \
while (o < e && p <= q) { \
+ p++; \
CAND; \
- p++; \
} \
} \
} while (0)
@@ -222,7 +222,6 @@ do {
\
cchdc_t *d = (cchdc_t *) imprints->dict->base; \
bte rpp = ATOMelmshift(IMPS_PAGE >> b->T->shift); \
CAND; \
- p++; \
for (i=0, dcnt=0, icnt=0; \
(dcnt < imprints->dictcnt) && (i < w+pr_off); \
dcnt++) { \
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list
