Changeset: f9bfc5297d8a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f9bfc5297d8a
Modified Files:
gdk/gdk_align.c
gdk/gdk_batop.c
Branch: Nov2019
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
@@ -38,6 +38,7 @@ unshare_string_heap(BAT *b)
return GDK_FAIL;
}
BBPunshare(b->tvheap->parentid);
+ BBPunfix(b->tvheap->parentid);
b->tvheap = h;
}
return GDK_SUCCEED;
@@ -110,6 +111,7 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
cand == NULL) {
if (b->tvheap->parentid != bid) {
BBPunshare(b->tvheap->parentid);
+ BBPunfix(b->tvheap->parentid);
} else {
HEAPfree(b->tvheap, true);
GDKfree(b->tvheap);
@@ -448,6 +450,7 @@ append_varsized_bat(BAT *b, BAT *n, BAT
* 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);
@@ -493,6 +496,7 @@ append_varsized_bat(BAT *b, BAT *n, BAT
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