From: Joe Shaw Date: Tue, 11 Jan 2005 19:59:06 +0000 (+0000) Subject: 2005-01-11 Joe Shaw X-Git-Tag: dbus-0.23~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3ba709079bb0fe1cc2a1afdfe25dc227a223972;p=platform%2Fupstream%2Fdbus.git 2005-01-11 Joe Shaw Patch from Tambet Ingo * mono/DBusType/Array.cs (Get): Get the underlying element type by calling type.GetElementType(). The code previously depended on broken Mono behavior, which was fixed in Mono 1.1.3. * mono/DBusType/Dict.cs (constructor): Fix the parameters for Activator.CreateInstance() so that the class's constructor is called with the right parameters. --- diff --git a/ChangeLog b/ChangeLog index b19e01d..a7ec073 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ 2005-01-11 Joe Shaw + Patch from Tambet Ingo + + * mono/DBusType/Array.cs (Get): Get the underlying element type by + calling type.GetElementType(). The code previously depended on + broken Mono behavior, which was fixed in Mono 1.1.3. + + * mono/DBusType/Dict.cs (constructor): Fix the parameters for + Activator.CreateInstance() so that the class's constructor is + called with the right parameters. + +2005-01-11 Joe Shaw + Patch from Timo Teräs * dbus/dbus-connection.c diff --git a/mono/DBusType/Array.cs b/mono/DBusType/Array.cs index bf41763..dd93a5c 100644 --- a/mono/DBusType/Array.cs +++ b/mono/DBusType/Array.cs @@ -106,6 +106,9 @@ namespace DBus.DBusType public object Get(System.Type type) { + if (type.IsArray) + type = type.GetElementType (); + if (Arguments.Suits(elementType, type.UnderlyingSystemType)) { this.val = System.Array.CreateInstance(type.UnderlyingSystemType, elements.Count); int i = 0; diff --git a/mono/DBusType/Dict.cs b/mono/DBusType/Dict.cs index f5c76b4..660cac5 100644 --- a/mono/DBusType/Dict.cs +++ b/mono/DBusType/Dict.cs @@ -41,8 +41,9 @@ namespace DBus.DBusType // Get the argument type and get the value Type elementType = (Type) DBus.Arguments.DBusTypes[(char) dbus_message_iter_get_arg_type(dictIter)]; - object [] pars = new Object[1]; + object [] pars = new Object[2]; pars[0] = dictIter; + pars[1] = service; DBusType.IDBusType dbusType = (DBusType.IDBusType) Activator.CreateInstance(elementType, pars); this.val.Add(key, dbusType); } while (dbus_message_iter_next(dictIter));