Changeset: b402b0a4eaf2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/b402b0a4eaf2 Modified Files: gdk/gdk_bat.c gdk/gdk_batop.c gdk/gdk_bbp.c gdk/gdk_heap.c Branch: Jun2023 Log Message:
Merge with Sep2022 branch. diffs (43 lines): diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -2891,6 +2891,7 @@ PROPdestroy_nolock(BAT *b) b->tprops = NULL; while (p) { n = p->next; + assert(p->id != (enum prop_t) 20); VALclear(&p->v); GDKfree(p); p = n; diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1913,6 +1913,12 @@ BBPexit(void) HEAPdecref(b->tvheap, false); b->tvheap = NULL; } + if (b->oldtail) { + Heap *h = b->oldtail; + b->oldtail = NULL; + ATOMIC_AND(&h->refs, ~DELAYEDREMOVE); + HEAPdecref(h, false); + } PROPdestroy_nolock(b); MT_lock_unset(&b->theaplock); BATfree(b); diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c --- a/gdk/gdk_heap.c +++ b/gdk/gdk_heap.c @@ -601,7 +601,11 @@ GDKupgradevarheap(BAT *b, var_t v, BUN c b->theap = new; if (BBP_status(bid) & (BBPEXISTING|BBPDELETED) && b->oldtail == NULL) { b->oldtail = old; - ATOMIC_OR(&old->refs, DELAYEDREMOVE); + if ((ATOMIC_OR(&old->refs, DELAYEDREMOVE) & HEAPREFS) == 1) { + /* we have the only reference, we can free the + * memory */ + HEAPfree(old, false); + } } else { ValPtr p = BATgetprop_nolock(b, (enum prop_t) 20); HEAPdecref(old, p == NULL || strcmp(((Heap*) p->val.pval)->filename, old->filename) != 0); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org