diff options
| author | Havoc Pennington <hp@redhat.com> | 2007-07-10 16:00:44 +0000 | 
|---|---|---|
| committer | Havoc Pennington <hp@redhat.com> | 2007-07-10 16:00:44 +0000 | 
| commit | e339814224d54c9b048ead2d6965f89790ec318a (patch) | |
| tree | 59ffbdd72d488f90f74ee0a5f6806e874f83437b | |
| parent | c65199b125378362e8baa52a361c45aa310d0c5d (diff) | |
2007-07-10  Havoc Pennington  <hp@redhat.com>
	* dbus/dbus-connection.c (struct DBusConnection): Fix from Olivier
	Hochreutiner to avoid trying to protect individual bits in a word
	with different locks (make dispatch_acquired and io_path_acquired
	dbus_bool_t rather than bitfields)
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | dbus/dbus-connection.c | 10 | 
2 files changed, 14 insertions, 3 deletions
@@ -1,3 +1,10 @@ +2007-07-10  Havoc Pennington  <hp@redhat.com> + +	* dbus/dbus-connection.c (struct DBusConnection): Fix from Olivier +	Hochreutiner to avoid trying to protect individual bits in a word +	with different locks (make dispatch_acquired and io_path_acquired +	dbus_bool_t rather than bitfields) +  2007-07-09  Ralf Habacker  <ralf.habacker@freenet.de>  	* dbus/dbus-sysdeps-win.c,dbus-sysdeps-win.h,dbus-sysdeps-win-util.c, diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 62ef3dac..de695247 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -281,10 +281,14 @@ struct DBusConnection    char *server_guid; /**< GUID of server if we are in shared_connections, #NULL if server GUID is unknown or connection is private */ +  /* These two MUST be bools and not bitfields, because they are protected by a separate lock +   * from connection->mutex and all bitfields in a word have to be read/written together. +   * So you can't have a different lock for different bitfields in the same word. +   */ +  dbus_bool_t dispatch_acquired; /**< Someone has dispatch path (can drain incoming queue) */ +  dbus_bool_t io_path_acquired;  /**< Someone has transport io path (can use the transport to read/write messages) */ +      unsigned int shareable : 1; /**< #TRUE if libdbus owns a reference to the connection and can return it from dbus_connection_open() more than once */ - -  unsigned int dispatch_acquired : 1; /**< Someone has dispatch path (can drain incoming queue) */ -  unsigned int io_path_acquired : 1;  /**< Someone has transport io path (can use the transport to read/write messages) */    unsigned int exit_on_disconnect : 1; /**< If #TRUE, exit after handling disconnect signal */  | 
