Changeset: 156d703a7c9c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/156d703a7c9c
Modified Files:
gdk/gdk_bat.c
gdk/gdk_bbp.c
monetdb5/modules/mal/mat.c
Branch: Jul2021
Log Message:
Changed BATsetaccess to always unfix the input on failure.
diffs (47 lines):
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2181,9 +2181,9 @@ BATsetaccess(BAT *b, restrict_t newmode)
BATcheck(b, NULL);
if ((isVIEW(b) || b->batSharecnt) && newmode != BAT_READ) {
BAT *bn = COLcopy(b, b->ttype, true, TRANSIENT);
+ BBPunfix(b->batCacheid);
if (bn == NULL)
return NULL;
- BBPunfix(b->batCacheid);
b = bn;
}
bakmode = (restrict_t) b->batRestricted;
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2511,14 +2511,15 @@ BBPkeepref(bat i)
bool lock = locked_by == 0 || locked_by != MT_getpid();
BAT *b;
+ incref(i, true, lock);
if ((b = BBPdescriptor(i)) != NULL) {
- b = BATsetaccess(b, BAT_READ);
BATsettrivprop(b);
if (GDKdebug & (CHECKMASK | PROPMASK))
BATassertProps(b);
+ if (BATsetaccess(b, BAT_READ) == NULL)
+ return; /* already decreffed */
}
- incref(i, true, lock);
assert(BBP_refs(i));
decref(i, false, false, lock, "BBPkeepref");
}
diff --git a/monetdb5/modules/mal/mat.c b/monetdb5/modules/mal/mat.c
--- a/monetdb5/modules/mal/mat.c
+++ b/monetdb5/modules/mal/mat.c
@@ -198,7 +198,7 @@ MATpackIncrement(Client cntxt, MalBlkPtr
}
BBPunfix(bb->batCacheid);
b->unused--;
- if (b->unused == 0 && !(b = BATsetaccess(b, BAT_READ)))
+ if (b->unused == 0 && (b = BATsetaccess(b, BAT_READ)) == NULL)
throw(MAL, "mat.pack", GDK_EXCEPTION);
if (b->tnil && b->tnonil) {
BBPunfix(b->batCacheid);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list