diff options
| -rw-r--r-- | ChangeLog | 20 | ||||
| -rw-r--r-- | dbus/dbus-connection.c | 4 | ||||
| -rw-r--r-- | mono/Connection.cs | 19 | ||||
| -rw-r--r-- | mono/DBusType/Array.cs | 2 | ||||
| -rw-r--r-- | mono/DBusType/ObjectPath.cs | 5 | ||||
| -rw-r--r-- | mono/DBusType/String.cs | 5 | 
6 files changed, 51 insertions, 4 deletions
@@ -1,3 +1,23 @@ +2005-03-08  Joe Shaw  <joeshaw@novell.com> +                                                                                 +        * dbus/dbus-connection.c (dbus_connection_send_with_reply): +        After we attach our pending call to the connection, unref +        it.  Fixes a leak. +  +        * mono/Connection.cs (set_RawConnection): Disconnect our +        filter and match callbacks from the old connection and +        reconnect them to the new connection, if any. + +	* mono/DBusType/Array.cs: "Code" is a static member, so +	don't use "this" to refer to it.  Fix for stricter checking +	in Mono 1.1.4. +  +        * mono/DBusType/ObjectPath.cs (Append): Don't leak the +	object path that we pass into unmanaged code. +  +        * mono/DBusType/String.cs (Append): Don't leak the string +	that we pass into unmanged code. +  2005-03-07  John (J5) Palmieri  <johnp@redhat.com>  	* NEWS: Update for 0.31 diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 92e0331b..db76ba22 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -2459,7 +2459,9 @@ dbus_connection_send_with_reply (DBusConnection     *connection,    if (!_dbus_connection_attach_pending_call_unlocked (connection,  						      pending))      goto error; -   +  +  dbus_pending_call_unref (pending); +     if (!_dbus_connection_send_unlocked_no_update (connection, message, NULL))      {        _dbus_connection_detach_pending_call_and_unlock (connection, diff --git a/mono/Connection.cs b/mono/Connection.cs index 699fee9e..6abd7e80 100644 --- a/mono/Connection.cs +++ b/mono/Connection.cs @@ -171,6 +171,13 @@ namespace DBus  	  if (rawConnection != IntPtr.Zero)   	    { +              // Remove our callbacks from this connection +              foreach (DBusHandleMessageFunction func in this.filters) +                dbus_connection_remove_filter (rawConnection, func, IntPtr.Zero); + +              foreach (string match_rule in this.matches) +                dbus_bus_remove_match (rawConnection, match_rule, IntPtr.Zero); +  	      // Get the reference to this  	      IntPtr rawThis = dbus_connection_get_data (rawConnection, Slot);  	      Debug.Assert (rawThis != IntPtr.Zero); @@ -197,6 +204,18 @@ namespace DBus  	      rawThis = GCHandle.Alloc (this, GCHandleType.WeakTrackResurrection);  	      dbus_connection_set_data(rawConnection, Slot, (IntPtr) rawThis, IntPtr.Zero); + +              // Add the callbacks to this new connection +              foreach (DBusHandleMessageFunction func in this.filters) +                dbus_connection_add_filter (rawConnection, func, IntPtr.Zero, IntPtr.Zero); + +              foreach (string match_rule in this.matches) +                dbus_bus_add_match (rawConnection, match_rule, IntPtr.Zero); +	    } +	  else +	    { +	      this.filters.Clear (); +              this.matches.Clear ();  	    }  	}      } diff --git a/mono/DBusType/Array.cs b/mono/DBusType/Array.cs index 7e46f73d..ef001b98 100644 --- a/mono/DBusType/Array.cs +++ b/mono/DBusType/Array.cs @@ -59,7 +59,7 @@ namespace DBus.DBusType        IntPtr arrayIter = Marshal.AllocCoTaskMem (Arguments.DBusMessageIterSize);        if (!dbus_message_iter_open_container (iter, -					     (int) this.Code, +					     (int) Code,  					     Arguments.GetCodeAsString (elementType),  					     arrayIter)) {  	throw new ApplicationException("Failed to append array argument: " + val); diff --git a/mono/DBusType/ObjectPath.cs b/mono/DBusType/ObjectPath.cs index 01a21ca9..4f064d59 100644 --- a/mono/DBusType/ObjectPath.cs +++ b/mono/DBusType/ObjectPath.cs @@ -52,7 +52,10 @@ namespace DBus.DBusType      {        IntPtr marshalVal = Marshal.StringToHGlobalAnsi (Path); -      if (!dbus_message_iter_append_basic (iter, (int) Code, ref marshalVal)) +      bool success = dbus_message_iter_append_basic (iter, (int) Code, ref marshalVal); +      Marshal.FreeHGlobal (marshalVal); + +      if (!success)  	throw new ApplicationException("Failed to append OBJECT_PATH argument:" + val);      } diff --git a/mono/DBusType/String.cs b/mono/DBusType/String.cs index bf354ea0..3b619cfb 100644 --- a/mono/DBusType/String.cs +++ b/mono/DBusType/String.cs @@ -36,7 +36,10 @@ namespace DBus.DBusType      {        IntPtr marshalVal = Marshal.StringToHGlobalAnsi (val); -      if (!dbus_message_iter_append_basic (iter, (int) Code, ref marshalVal)) +      bool success = dbus_message_iter_append_basic (iter, (int) Code, ref marshalVal); +      Marshal.FreeHGlobal (marshalVal); + +      if (!success)  	throw new ApplicationException("Failed to append STRING argument:" + val);      }  | 
