summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Shaw <joeshaw@novell.com>2005-01-11 19:59:06 +0000
committerJoe Shaw <joeshaw@novell.com>2005-01-11 19:59:06 +0000
commitb3ba709079bb0fe1cc2a1afdfe25dc227a223972 (patch)
tree40f64981094d217607489deeba57785b671ace4a
parentac4d2cb4642cfb2f56b260b1892d092022efc257 (diff)
downloaddbus-b3ba709079bb0fe1cc2a1afdfe25dc227a223972.tar.gz
2005-01-11 Joe Shaw <joeshaw@novell.com>
Patch from Tambet Ingo <tambet@ximian.com> * 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.
-rw-r--r--ChangeLog12
-rw-r--r--mono/DBusType/Array.cs3
-rw-r--r--mono/DBusType/Dict.cs3
3 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b19e01dd..a7ec073a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2005-01-11 Joe Shaw <joeshaw@novell.com>
+ Patch from Tambet Ingo <tambet@ximian.com>
+
+ * 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 <joeshaw@novell.com>
+
Patch from Timo Teräs <ext-timo.teras@nokia.com>
* dbus/dbus-connection.c
diff --git a/mono/DBusType/Array.cs b/mono/DBusType/Array.cs
index bf41763c..dd93a5cc 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 f5c76b4c..660cac57 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));