From c84e45b40ff271d022061388d9355aa6ad00df40 Mon Sep 17 00:00:00 2001 From: Joe Shaw Date: Tue, 15 Mar 2005 23:30:55 +0000 Subject: 2005-03-15 Joe Shaw * mono/ProxyBuilder.cs (BuildFinalizer): Fix some invalid IL when generating the finalizer. Fixes from Ben Maurer. --- ChangeLog | 5 +++++ mono/ProxyBuilder.cs | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23c549af..03c53898 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-03-15 Joe Shaw + + * mono/ProxyBuilder.cs (BuildFinalizer): Fix some invalid IL when + generating the finalizer. Fixes from Ben Maurer. + 2005-03-13 Joe Shaw * mono/ProxyBuilder.cs (BuildConstructor): Decalre a local diff --git a/mono/ProxyBuilder.cs b/mono/ProxyBuilder.cs index 8d374ae0..7a3de959 100644 --- a/mono/ProxyBuilder.cs +++ b/mono/ProxyBuilder.cs @@ -468,7 +468,7 @@ namespace DBus generator.Emit(OpCodes.Ret); } - public void BuildFinalizer (TypeBuilder tb, FieldInfo fi) + public void BuildFinalizer (TypeBuilder tb, FieldInfo serviceF, FieldInfo deleF) { // Note that this is a *HORRIBLE* example of how to build a finalizer // It doesn't use the try/finally to chain to Object::Finalize. However, @@ -485,8 +485,10 @@ namespace DBus //generator.EmitWriteLine("this.service.SignalCalled -= this.delegate_created"); generator.Emit (OpCodes.Ldarg_0); - generator.Emit (OpCodes.Ldfld, fi); - generator.Emit (OpCodes.Call, Service_RemoveSignalCalledMI); + generator.Emit (OpCodes.Ldfld, serviceF); + generator.Emit (OpCodes.Ldarg_0); + generator.Emit (OpCodes.Ldfld, deleF); + generator.EmitCall (OpCodes.Callvirt, Service_RemoveSignalCalledMI, null); generator.Emit (OpCodes.Ret); } @@ -556,7 +558,7 @@ namespace DBus FieldBuilder deleF = typeB.DefineField("delegate_created", typeof(Service.SignalCalledHandler), FieldAttributes.Private); - BuildFinalizer (typeB, deleF); + BuildFinalizer (typeB, serviceF, deleF); MethodInfo signalCalledMI = BuildSignalCalled(ref typeB, serviceF, pathF); BuildConstructor(ref typeB, serviceF, pathF, signalCalledMI, deleF); -- cgit v1.2.3