The information in this article applies to:
SYMPTOMSWhen you use an instantiation of the _com_ptr_t template class and assign a _variant_t to it, the associated COM object may not be released when it should be. CAUSE_com_ptr_t::operator=(const _variant_t&) calls another member function, QueryStdInterfaces, which ultimately AddRef's upon success. The problem is that operator= also AddRef's upon success. RESOLUTIONCall Release() explicitly before the object goes out of scope. STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This bug has been corrected in Visual
Studio 97 Service Pack 1. Q170365 INFO: Visual Studio 97 Service Packs - What, Where, and Why MORE INFORMATIONThe sample code below demonstrates the problem with operator=(const _variant_t&) of the class template _com_ptr_t. The parameter vt is an IUnknown*. To offset the result of the second AddRef, you need to call punk- >Release before leaving the function below. Sample Code
Additional query words:
Keywords : kbcode kbVC500bug kbVS97sp1fix |
Last Reviewed: August 2, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |