2010-01-19 Tom Hindle <tom_hindle@sil.org>
authorRobert Jordan <robertj@gmx.net>
Fri, 26 Feb 2010 19:18:32 +0000 (19:18 -0000)
committerRobert Jordan <robertj@gmx.net>
Fri, 26 Feb 2010 19:18:32 +0000 (19:18 -0000)
* 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

mcs/class/corlib/Mono.Interop/ChangeLog
mcs/class/corlib/Mono.Interop/ComInteropProxy.cs

index 06f4a46e67b8b9594b5848549405b1b8dcb724e7..e2ede8f9b4feccefaf23884a2e0514cbe03b15c5 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-19  Tom Hindle <tom_hindle@sil.org>
+
+       * ComInteropProxy.cs: Don't add proxy if it has already been added. 
+       Instread increment ref_count. Fixes bug #572043.
+
 2009-07-11  Robert Jordan  <robertj@gmx.net>
 
        * ComInteropProxy.cs: Implement CreateProxy. Hide public/internal
index 865e448ee48015e66cb3cee78cb03f9fc2c49469..54fefe2b24d9c8f9b68babac98de366b2e811dc7 100644 (file)
@@ -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)