summaryrefslogtreecommitdiffstats
path: root/mono/DBusType/String.cs
diff options
context:
space:
mode:
Diffstat (limited to 'mono/DBusType/String.cs')
-rw-r--r--mono/DBusType/String.cs14
1 files changed, 10 insertions, 4 deletions
diff --git a/mono/DBusType/String.cs b/mono/DBusType/String.cs
index bced310a..bf354ea0 100644
--- a/mono/DBusType/String.cs
+++ b/mono/DBusType/String.cs
@@ -25,12 +25,18 @@ namespace DBus.DBusType
public String(IntPtr iter, Service service)
{
- this.val = Marshal.PtrToStringAnsi(dbus_message_iter_get_string(iter));
+ IntPtr raw;
+
+ dbus_message_iter_get_basic (iter, out raw);
+
+ this.val = Marshal.PtrToStringAnsi (raw);
}
public void Append(IntPtr iter)
{
- if (!dbus_message_iter_append_string(iter, Marshal.StringToHGlobalAnsi(val)))
+ IntPtr marshalVal = Marshal.StringToHGlobalAnsi (val);
+
+ if (!dbus_message_iter_append_basic (iter, (int) Code, ref marshalVal))
throw new ApplicationException("Failed to append STRING argument:" + val);
}
@@ -78,9 +84,9 @@ namespace DBus.DBusType
}
[DllImport("dbus-1")]
- private extern static IntPtr dbus_message_iter_get_string(IntPtr iter);
+ private extern static void dbus_message_iter_get_basic (IntPtr iter, out IntPtr value);
[DllImport("dbus-1")]
- private extern static bool dbus_message_iter_append_string(IntPtr iter, IntPtr value);
+ private extern static bool dbus_message_iter_append_basic (IntPtr iter, int type, ref IntPtr value);
}
}