Changeset: 3fcd061c149f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3fcd061c149f
Modified Files:
gdk/gdk_atoms.c
gdk/gdk_private.h
gdk/gdk_utils.c
Branch: Jul2017
Log Message:
Free unknown atoms descriptions while shutting down the server
diffs (47 lines):
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -2182,3 +2182,20 @@ ATOMunknown_name(int i)
assert(unknown[-i]);
return unknown[-i];
}
+
+void
+ATOMunknown_clean(void)
+{
+ int i;
+
+ MT_lock_set(&GDKthreadLock);
+ for (i = 1; i < MAXATOMS; i++) {
+ if(unknown[i]) {
+ GDKfree(unknown[i]);
+ unknown[i] = NULL;
+ } else {
+ break;
+ }
+ }
+ MT_lock_unset(&GDKthreadLock);
+}
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -36,6 +36,8 @@ enum heaptype {
__attribute__((__visibility__("hidden")));
__hidden str ATOMunknown_name(int a)
__attribute__((__visibility__("hidden")));
+__hidden void ATOMunknown_clean(void)
+ __attribute__((__visibility__("hidden")));
__hidden int BATcheckhash(BAT *b)
__attribute__((__visibility__("hidden")));
__hidden int BATcheckimprints(BAT *b)
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -809,6 +809,7 @@ GDKreset(int status, int exit)
MT_lock_unset(&GDKthreadLock);
//gdk_system_reset(); CHECK OUT
}
+ ATOMunknown_clean();
#ifdef NEED_MT_LOCK_INIT
MT_lock_destroy(&MT_system_lock);
#if defined(USE_PTHREAD_LOCKS) && defined(ATOMIC_LOCK)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list