Changeset: 5d976ee54e97 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5d976ee54e97 Modified Files: gdk/gdk_align.c gdk/gdk_batop.c Branch: Jun2020 Log Message:
Fixing BAT leaks: decref physical count after vheap unshare. diffs (55 lines): diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c --- a/gdk/gdk_align.c +++ b/gdk/gdk_align.c @@ -129,10 +129,14 @@ VIEWcreate(oid seq, BAT *b) /* Order OID index */ bn->torderidx = NULL; if (BBPcacheit(bn, true) != GDK_SUCCEED) { /* enter in BBP */ - if (tp) + if (tp) { BBPunshare(tp); - if (bn->tvheap) + BBPunfix(tp); + } + if (bn->tvheap) { BBPunshare(bn->tvheap->parentid); + BBPunfix(bn->tvheap->parentid); + } MT_lock_destroy(&bn->batIdxLock); GDKfree(bn); return NULL; diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -37,6 +37,7 @@ unshare_string_heap(BAT *b) return GDK_FAIL; } BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); b->tvheap = h; } return GDK_SUCCEED; @@ -106,6 +107,7 @@ insert_string_bat(BAT *b, BAT *n, struct ci->tpe == cand_dense) { if (b->tvheap->parentid != bid) { BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); } else { HEAPfree(b->tvheap, true); GDKfree(b->tvheap); @@ -417,6 +419,7 @@ append_varsized_bat(BAT *b, BAT *n, stru * to n's */ if (b->tvheap->parentid != b->batCacheid) { BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); } else { HEAPfree(b->tvheap, true); GDKfree(b->tvheap); @@ -468,6 +471,7 @@ append_varsized_bat(BAT *b, BAT *n, stru return GDK_FAIL; } BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); b->tvheap = h; } /* copy data from n to b */ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list