Changeset: a11690ee96d4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a11690ee96d4
Modified Files:
gdk/gdk_imprints.c
Branch: Jan2014
Log Message:
Fix race condition.
diffs (55 lines):
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -795,29 +795,30 @@ IMPSremove(BAT *b) {
MT_lock_set(&GDKimprintsLock(abs(b->batCacheid)),
"BATimprints");
- imprints = b->T->imprints;
- b->T->imprints = NULL;
+ if ((imprints = b->T->imprints) != NULL) {
+ b->T->imprints = NULL;
- if (imprints->imps->storage != STORE_MEM)
- HEAPdelete(imprints->imps,
- BBP_physical(b->batCacheid), "imps");
- else
- HEAPfree(imprints->imps);
- if (imprints->dict->storage != STORE_MEM)
- HEAPdelete(imprints->dict,
- BBP_physical(b->batCacheid), "dict");
- else
- HEAPfree(imprints->dict);
- if (imprints->bins->storage != STORE_MEM)
- HEAPdelete(imprints->bins,
- BBP_physical(b->batCacheid), "bins");
- else
- HEAPfree(imprints->bins);
+ if (imprints->imps->storage != STORE_MEM)
+ HEAPdelete(imprints->imps,
+ BBP_physical(b->batCacheid), "imps");
+ else
+ HEAPfree(imprints->imps);
+ if (imprints->dict->storage != STORE_MEM)
+ HEAPdelete(imprints->dict,
+ BBP_physical(b->batCacheid), "dict");
+ else
+ HEAPfree(imprints->dict);
+ if (imprints->bins->storage != STORE_MEM)
+ HEAPdelete(imprints->bins,
+ BBP_physical(b->batCacheid), "bins");
+ else
+ HEAPfree(imprints->bins);
- GDKfree(imprints->imps);
- GDKfree(imprints->dict);
- GDKfree(imprints->bins);
- GDKfree(imprints);
+ GDKfree(imprints->imps);
+ GDKfree(imprints->dict);
+ GDKfree(imprints->bins);
+ GDKfree(imprints);
+ }
MT_lock_unset(&GDKimprintsLock(abs(b->batCacheid)),
"BATimprints");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list