diff options
author | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2009-04-19 21:28:37 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2009-04-19 21:28:37 -0400 |
commit | 33d5a3f6ec7964dac837e550342b771d2fbc5c59 (patch) | |
tree | 8d0ebad1f6eabce22ff715721e64726c33777cf6 | |
parent | 9da7c4a39b96be96fb5c0c34ef305c81151df898 (diff) |
Remove released names from connection
-rw-r--r-- | dbus-int.c | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -410,8 +410,8 @@ connection_unregister_object (connection_t *connection, } } -static gboolean -owns_name (connection_t *connection, +static char * +find_name (connection_t *connection, const char *name) { char **n; @@ -419,20 +419,24 @@ owns_name (connection_t *connection, for (n = connection->names; *n; n++) { if (strcmp (*n, name) == 0) - return TRUE; + return *n; } - return FALSE; + return NULL; } void connection_release_name (connection_t *connection, const char * name) { - if (!owns_name (connection, name)) + char *n; + + if (!(n = find_name (connection, name))) return; - /* FIXME: errors? */ + g_free (n); + + connection->names = nul_array_remove_fast (connection->names, n); dbus_bus_release_name (connection->dconnection, name, NULL); } @@ -450,7 +454,7 @@ connection_request_name (connection_t *connection, * DBUS_FLAG_DO_NOT_QUEUE */ - if (owns_name (connection, name)) + if (find_name (connection, name)) return TRUE; /* Should we g_critical here? */ r = dbus_bus_request_name (connection->dconnection, |