g_return_val_if_fail (self->watch == NULL, FALSE);
- self->cache_lock = g_slice_new (CRITICAL_SECTION);
- InitializeCriticalSection (self->cache_lock);
-
watch = g_slice_new (WatchThreadState);
watch->owner = G_SETTINGS_BACKEND (self);
return TRUE;
fail_2:
- DeleteCriticalSection (self->cache_lock);
- g_slice_free (CRITICAL_SECTION, self->cache_lock);
DeleteCriticalSection (watch->message_lock);
g_slice_free (CRITICAL_SECTION, watch->message_lock);
CloseHandle (watch->message_sent_event);
LeaveCriticalSection (watch->message_lock);
DeleteCriticalSection (watch->message_lock);
- DeleteCriticalSection (self->cache_lock);
g_slice_free (CRITICAL_SECTION, watch->message_lock);
- g_slice_free (CRITICAL_SECTION, self->cache_lock);
CloseHandle (watch->message_sent_event);
CloseHandle (watch->message_received_event);
CloseHandle (watch->thread);
EnterCriticalSection (self->cache_lock);
cache_node = registry_cache_get_node_for_key (self->cache_root, gsettings_prefix, TRUE);
- g_return_val_if_fail (cache_node != NULL, FALSE);
- g_return_val_if_fail (cache_node->data != NULL, FALSE);
+ if (cache_node == NULL || cache_node->data == NULL)
+ {
+ LeaveCriticalSection (self->cache_lock);
+ g_warn_if_reached ();
+ return FALSE;
+ }
cache_item = cache_node->data;
{
trace ("watch_add_notify: prefix %s already watched, %i subscribers.\n",
gsettings_prefix, cache_item->subscription_count);
+ LeaveCriticalSection (self->cache_lock);
return FALSE;
}
watch_stop_unlocked (self);
}
+ DeleteCriticalSection (self->cache_lock);
+ g_slice_free (CRITICAL_SECTION, self->cache_lock);
+
g_free (self->base_path);
}
item->ref_count = 1;
self->cache_root = g_node_new (item);
+ self->cache_lock = g_slice_new (CRITICAL_SECTION);
+ InitializeCriticalSection (self->cache_lock);
+
self->watch = NULL;
}