diff options
Diffstat (limited to 'mono/ProxyBuilder.cs')
-rw-r--r-- | mono/ProxyBuilder.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/mono/ProxyBuilder.cs b/mono/ProxyBuilder.cs index 80449093..fefac473 100644 --- a/mono/ProxyBuilder.cs +++ b/mono/ProxyBuilder.cs @@ -35,6 +35,8 @@ namespace DBus new Type[0]); private static MethodInfo Message_SendMI = typeof(Message).GetMethod("Send", new Type[0]); + private static MethodInfo Message_DisposeMI = typeof(Message).GetMethod("Dispose", + new Type[0]); private static MethodInfo Arguments_GetEnumeratorMI = typeof(Arguments).GetMethod("GetEnumerator", new Type[0]); private static MethodInfo IEnumerator_MoveNextMI = typeof(System.Collections.IEnumerator).GetMethod("MoveNext", @@ -197,7 +199,6 @@ namespace DBus // Generate the locals LocalBuilder methodCallL = generator.DeclareLocal(typeof(MethodCall)); methodCallL.SetLocalSymInfo("signal"); - LocalBuilder replyL = generator.DeclareLocal(typeof(MethodReturn)); //generator.EmitWriteLine("Signal signal = new Signal(...)"); generator.Emit(OpCodes.Ldsfld, serviceF); @@ -224,6 +225,10 @@ namespace DBus generator.Emit(OpCodes.Ldloc_0); generator.EmitCall(OpCodes.Callvirt, Message_SendMI, null); + //generator.EmitWriteLine("signal.Dispose()"); + generator.Emit(OpCodes.Ldloc_0); + generator.EmitCall(OpCodes.Callvirt, Message_DisposeMI, null); + //generator.EmitWriteLine("return"); generator.Emit(OpCodes.Ret); } @@ -310,6 +315,15 @@ namespace DBus } } + // Clean up after ourselves + //generator.EmitWriteLine("methodCall.Dispose()"); + generator.Emit(OpCodes.Ldloc_0); + generator.EmitCall(OpCodes.Callvirt, Message_DisposeMI, null); + + //generator.EmitWriteLine("reply.Dispose()"); + generator.Emit(OpCodes.Ldloc_1); + generator.EmitCall(OpCodes.Callvirt, Message_DisposeMI, null); + if (method.ReturnType != typeof(void)) { generator.Emit(OpCodes.Ldloc_3); } |