summaryrefslogtreecommitdiff
path: root/droute
diff options
context:
space:
mode:
authorMark Doffman <mark.doffman@codethink.co.uk>2010-01-05 12:50:55 -0800
committerMark Doffman <mark.doffman@codethink.co.uk>2010-01-05 12:50:55 -0800
commit0c6971bdf4c2c0f3e64580287cd17555c32881dd (patch)
tree813b196f4d4f8ef731caacf338ba3ff74a97588c /droute
parent5713a8e46559b6de9fbf5fc3e073d0d482d8c7e1 (diff)
downloadat-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.c17
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);