Changeset: 02e2b7c22be8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/02e2b7c22be8
Modified Files:
        gdk/gdk_bbp.c
Branch: strheapvacuum
Log Message:

add some locking


diffs (40 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -4251,11 +4251,16 @@ int gdk_add_callback(gdk_callback *callb
        if (p) {
                int cnt = 1;
                do {
-                       cnt += 1;
+                       // check if already added
+                       if (strcmp(callback->name, p->name) == 0)
+                               return callback_list.cnt;
                        if (p->next == NULL) {
                                p->next = callback;
                                p = callback->next;
+                       } else {
+                               p = p->next;
                        }
+                       cnt += 1;
                } while(p);
                callback_list.cnt = cnt;
        } else {
@@ -4275,6 +4280,7 @@ int gdk_remove_callback(char *cb_name) {
        gdk_callback *prev = NULL;
        while(curr) {
                if (strcmp(cb_name, curr->name) == 0) {
+                       MT_lock_set(&(callback_list.lock));
                        if (curr == callback_list.head && prev == NULL) {
                                callback_list.head = curr->next;
                        } else {
@@ -4282,8 +4288,9 @@ int gdk_remove_callback(char *cb_name) {
                        }
                        if (curr->argsfree) curr->argsfree(curr->argc, 
curr->argv);
                        GDKfree(curr);
+                       callback_list.cnt -=1;
                        curr = NULL;
-                       callback_list.cnt -=1;
+                       MT_lock_unset(&(callback_list.lock));
                } else {
                        prev = curr;
                        curr = curr->next;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to