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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list