diff options
author | Mark Doffman <mark.doffman@codethink.co.uk> | 2010-01-05 12:50:55 -0800 |
---|---|---|
committer | Mark Doffman <mark.doffman@codethink.co.uk> | 2010-01-05 12:50:55 -0800 |
commit | 0c6971bdf4c2c0f3e64580287cd17555c32881dd (patch) | |
tree | 813b196f4d4f8ef731caacf338ba3ff74a97588c /droute | |
parent | 5713a8e46559b6de9fbf5fc3e073d0d482d8c7e1 (diff) | |
download | at-spi2-atk-0c6971bdf4c2c0f3e64580287cd17555c32881dd.tar.gz |
Fix object lifecycle errors.
Add an application reference to the event structure.
Diffstat (limited to 'droute')
-rw-r--r-- | droute/droute.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/droute/droute.c b/droute/droute.c index 5ab1478..8c7bd51 100644 --- a/droute/droute.c +++ b/droute/droute.c @@ -249,6 +249,8 @@ impl_prop_GetAll (DBusMessage *message, gchar *iface; void *datum = path_get_datum (path, pathstr); + if (!datum) + return NULL; dbus_error_init (&error); if (!dbus_message_get_args @@ -299,6 +301,7 @@ impl_prop_GetSet (DBusMessage *message, StrPair pair; PropertyPair *prop_funcs = NULL; + void *datum; dbus_error_init (&error); if (!dbus_message_get_args (message, @@ -316,9 +319,13 @@ impl_prop_GetSet (DBusMessage *message, if (!prop_funcs) return dbus_message_new_error (message, DBUS_ERROR_FAILED, "Property unavailable"); + datum = path_get_datum (path, pathstr); + if (!datum) + return NULL; + if (get && prop_funcs->get) { - void *datum = path_get_datum (path, pathstr); + DBusMessageIter iter; _DROUTE_DEBUG ("DRoute (handle prop Get): %s|%s on %s\n", pair.one, pair.two, pathstr); @@ -333,7 +340,6 @@ impl_prop_GetSet (DBusMessage *message, } else if (!get && prop_funcs->set) { - void *datum = path_get_datum (path, pathstr); DBusMessageIter iter; _DROUTE_DEBUG ("DRoute (handle prop Get): %s|%s on %s\n", pair.one, pair.two, pathstr); @@ -484,15 +490,20 @@ handle_other (DBusConnection *bus, DRouteFunction func; DBusMessage *reply = NULL; + void *datum; + pair.one = iface; pair.two = member; _DROUTE_DEBUG ("DRoute (handle other): %s|%s on %s\n", member, iface, pathstr); + datum = path_get_datum (path, pathstr); + if (!datum) + return result; + func = (DRouteFunction) g_hash_table_lookup (path->methods, &pair); if (func != NULL) { - void *datum = path_get_datum (path, pathstr); reply = (func) (bus, message, datum); |