Changeset: 202bab734171 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=202bab734171
Modified Files:
gdk/gdk_join.c
Branch: default
Log Message:
Don't keep pointers into heap across tfastins_nocheck.
A HEAPextend could happen which could invalidate the pointer.
diffs (34 lines):
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2832,7 +2832,8 @@ project_any(BAT *bn, BAT *l, BAT *r, int
BATiter ri, bni;
int (*cmp)(const void *, const void *) = BATatoms[r->ttype].atomCmp;
const void *nil = ATOMnilptr(r->ttype);
- const void *v, *prev = NULL;
+ const void *v;
+ BUN prev = BUN_NONE;
const oid *o;
int c;
@@ -2859,8 +2860,9 @@ project_any(BAT *bn, BAT *l, BAT *r, int
bn->T->nonil = 0;
bn->T->nil = 1;
}
- if (prev && (bn->trevsorted | bn->tsorted | bn->tkey)) {
- c = cmp(prev, v);
+ if (prev != BUN_NONE &&
+ (bn->trevsorted | bn->tsorted | bn->tkey)) {
+ c = cmp(BUNtail(bni, prev), v);
if (c < 0) {
bn->trevsorted = 0;
if (!bn->tsorted)
@@ -2873,7 +2875,7 @@ project_any(BAT *bn, BAT *l, BAT *r, int
bn->tkey = 0; /* definitely */
}
}
- prev = BUNtail(bni, n);
+ prev = n;
}
}
assert(n == BATcount(l));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list