From: Robert Jordan Date: Fri, 26 Feb 2010 19:18:32 +0000 (-0000) Subject: 2010-01-19 Tom Hindle X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=4e6ba56b1175d77a2020a8726409fb1d370cb3ae;p=mono.git 2010-01-19 Tom Hindle * ComInteropProxy.cs: Don't add proxy if it has already been added. Instread increment ref_count. Fixes bug #572043. svn path=/trunk/mcs/; revision=152571 --- diff --git a/mcs/class/corlib/Mono.Interop/ChangeLog b/mcs/class/corlib/Mono.Interop/ChangeLog index 06f4a46e67b..e2ede8f9b4f 100644 --- a/mcs/class/corlib/Mono.Interop/ChangeLog +++ b/mcs/class/corlib/Mono.Interop/ChangeLog @@ -1,3 +1,8 @@ +2010-01-19 Tom Hindle + + * ComInteropProxy.cs: Don't add proxy if it has already been added. + Instread increment ref_count. Fixes bug #572043. + 2009-07-11 Robert Jordan * ComInteropProxy.cs: Implement CreateProxy. Hide public/internal diff --git a/mcs/class/corlib/Mono.Interop/ComInteropProxy.cs b/mcs/class/corlib/Mono.Interop/ComInteropProxy.cs index 865e448ee48..54fefe2b24d 100644 --- a/mcs/class/corlib/Mono.Interop/ComInteropProxy.cs +++ b/mcs/class/corlib/Mono.Interop/ComInteropProxy.cs @@ -67,7 +67,10 @@ namespace Mono.Interop { // called from unmanaged code after .ctor is invoked // we need .ctor to create unmanaged object and thus IUnknown property value - AddProxy (com_object.IUnknown, this); + if (FindProxy(com_object.IUnknown) == null) + AddProxy (com_object.IUnknown, this); + else + System.Threading.Interlocked.Increment (ref ref_count); } ComInteropProxy (IntPtr pUnk)