summaryrefslogtreecommitdiffstats
path: root/mono/Arguments.cs
diff options
context:
space:
mode:
Diffstat (limited to 'mono/Arguments.cs')
-rw-r--r--mono/Arguments.cs22
1 files changed, 15 insertions, 7 deletions
diff --git a/mono/Arguments.cs b/mono/Arguments.cs
index 41e6d15d..61ae443f 100644
--- a/mono/Arguments.cs
+++ b/mono/Arguments.cs
@@ -7,29 +7,37 @@ namespace DBus
{
// Holds the arguments of a message. Provides methods for appending
// arguments and to assist in matching .NET types with D-BUS types.
- public class Arguments : IEnumerable
+ public class Arguments : IEnumerable, IDisposable
{
// Must follow sizeof(DBusMessageIter)
internal const int DBusMessageIterSize = 14*4;
private static Hashtable dbusTypes = null;
private Message message;
- private IntPtr appenderIter = Marshal.AllocCoTaskMem(DBusMessageIterSize);
+ private IntPtr appenderIter;
private IEnumerator enumerator = null;
- internal Arguments()
+ internal Arguments (Message message)
{
+ this.appenderIter = Marshal.AllocCoTaskMem(DBusMessageIterSize);
+ this.message = message;
}
- ~Arguments()
+ private void Dispose (bool disposing)
{
Marshal.FreeCoTaskMem(appenderIter);
}
- internal Arguments(Message message)
+ public void Dispose ()
{
- this.message = message;
+ Dispose (true);
+ GC.SuppressFinalize (this);
}
-
+
+ ~Arguments()
+ {
+ Dispose (false);
+ }
+
// Checks the suitability of a D-BUS type for supporting a .NET
// type.
public static bool Suits(Type dbusType, Type type)