summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Andrieu <oliv__a@users.sourceforge.net>2004-07-22 07:07:01 +0000
committerOlivier Andrieu <oliv__a@users.sourceforge.net>2004-07-22 07:07:01 +0000
commit7eb304c54ee8ea6dfa3775cf89d63c39295747a8 (patch)
tree386e2c88c832b386221f2f1cabdedb83c1ef7b49
parentc9c0adce43caa00345ad2aeb55822eabde523c2c (diff)
2004-07-22 Olivier Andrieu <oliv__a@users.sourceforge.net>
* dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name, breaking build on Solaris, reported by Farhad Saberi on the ML. * dbus/dbus-message.c (dbus_message_append_args_valist): fix the va_arg invocation to account for integer promotion in the case of DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901) * bus/services.c (bus_service_remove_owner): fix bug #902, use _dbus_list_get_first_link, not _dbus_list_get_first. * dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak. * dbus/dbus-object-tree.c (free_subtree_recurse): always null handler functions so that the asserts in _dbus_object_subtree_unref do not fail. * dbus/dbus-transport-unix.c (do_reading): _dbus_transport_queue_messages return value is of type dbus_bool_t, not DBusDispatchStatus.
-rw-r--r--ChangeLog22
-rw-r--r--bus/services.c3
-rw-r--r--dbus/dbus-bus.c6
-rw-r--r--dbus/dbus-message.c7
-rw-r--r--dbus/dbus-object-tree.c13
-rw-r--r--dbus/dbus-sysdeps.c2
-rw-r--r--dbus/dbus-transport-unix.c2
7 files changed, 38 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index 664bc89f..e902f3ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2004-07-22 Olivier Andrieu <oliv__a@users.sourceforge.net>
+
+ * dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name,
+ breaking build on Solaris, reported by Farhad Saberi on the ML.
+
+ * dbus/dbus-message.c (dbus_message_append_args_valist): fix the
+ va_arg invocation to account for integer promotion in the case of
+ DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901)
+
+ * bus/services.c (bus_service_remove_owner): fix bug #902, use
+ _dbus_list_get_first_link, not _dbus_list_get_first.
+
+ * dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak.
+
+ * dbus/dbus-object-tree.c (free_subtree_recurse): always null
+ handler functions so that the asserts in _dbus_object_subtree_unref
+ do not fail.
+
+ * dbus/dbus-transport-unix.c (do_reading):
+ _dbus_transport_queue_messages return value is of type
+ dbus_bool_t, not DBusDispatchStatus.
+
2004-07-19 David Zeuthen <david@fubar.dk>
* dbus/dbus-protocol.h: Add DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN
diff --git a/bus/services.c b/bus/services.c
index c5a6ded8..33caded6 100644
--- a/bus/services.c
+++ b/bus/services.c
@@ -693,10 +693,9 @@ bus_service_remove_owner (BusService *service,
else
{
DBusList *link;
- link = _dbus_list_get_first (&service->owners);
+ link = _dbus_list_get_first_link (&service->owners);
_dbus_assert (link != NULL);
link = _dbus_list_get_next_link (&service->owners, link);
-
_dbus_assert (link != NULL);
/* This will be our new owner */
diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c
index 7b609d67..4dd2eaf9 100644
--- a/dbus/dbus-bus.c
+++ b/dbus/dbus-bus.c
@@ -713,7 +713,7 @@ dbus_bus_service_exists (DBusConnection *connection,
DBusError *error)
{
DBusMessage *message, *reply;
- unsigned int exists;
+ dbus_bool_t exists;
_dbus_return_val_if_fail (connection != NULL, FALSE);
_dbus_return_val_if_fail (service_name != NULL, FALSE);
@@ -752,10 +752,12 @@ dbus_bus_service_exists (DBusConnection *connection,
DBUS_TYPE_INVALID))
{
_DBUS_ASSERT_ERROR_IS_SET (error);
+ dbus_message_unref (reply);
return FALSE;
}
- return (exists != FALSE);
+ dbus_message_unref (reply);
+ return exists;
}
/**
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c
index 2e4c9b35..8887720a 100644
--- a/dbus/dbus-message.c
+++ b/dbus/dbus-message.c
@@ -3984,10 +3984,9 @@ dbus_message_append_args_valist (DBusMessage *message,
goto errorout;
break;
case DBUS_TYPE_BYTE:
- /* FIXME if you pass an unsigned char to varargs it gets promoted to int,
- * so probably we should read an int here.
- */
- if (!dbus_message_iter_append_byte (&iter, va_arg (var_args, unsigned char)))
+ /* Read an int from varargs, because the original unsigned
+ * char has been promoted to int. */
+ if (!dbus_message_iter_append_byte (&iter, va_arg (var_args, int)))
goto errorout;
break;
case DBUS_TYPE_BOOLEAN:
diff --git a/dbus/dbus-object-tree.c b/dbus/dbus-object-tree.c
index 3ec97320..4f82d6f5 100644
--- a/dbus/dbus-object-tree.c
+++ b/dbus/dbus-object-tree.c
@@ -536,13 +536,12 @@ free_subtree_recurse (DBusConnection *connection,
/* Call application code */
if (subtree->unregister_function)
- {
- (* subtree->unregister_function) (connection,
- subtree->user_data);
- subtree->message_function = NULL;
- subtree->unregister_function = NULL;
- subtree->user_data = NULL;
- }
+ (* subtree->unregister_function) (connection,
+ subtree->user_data);
+
+ subtree->message_function = NULL;
+ subtree->unregister_function = NULL;
+ subtree->user_data = NULL;
/* Now free ourselves */
_dbus_object_subtree_unref (subtree);
diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c
index ed1e61a2..3a0947e1 100644
--- a/dbus/dbus-sysdeps.c
+++ b/dbus/dbus-sysdeps.c
@@ -1549,7 +1549,7 @@ fill_user_info (DBusUserInfo *info,
if (info->group_ids == NULL)
{
dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL);
- goto out;
+ goto failed;
}
info->n_group_ids = 1;
diff --git a/dbus/dbus-transport-unix.c b/dbus/dbus-transport-unix.c
index 0c6e9cd4..2e942abc 100644
--- a/dbus/dbus-transport-unix.c
+++ b/dbus/dbus-transport-unix.c
@@ -686,7 +686,7 @@ do_reading (DBusTransport *transport)
total += bytes_read;
- if (_dbus_transport_queue_messages (transport) == DBUS_DISPATCH_NEED_MEMORY)
+ if (!_dbus_transport_queue_messages (transport))
{
oom = TRUE;
_dbus_verbose (" out of memory when queueing messages we just read in the transport\n");