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