Microsoft KB Archive/130867

= FIX: Link Paste Update Causes ASSERT in AFXWIN1.INL =

Article ID: 130867

Article Last Modified on 11/21/2006

-

APPLIES TO


 * Microsoft Foundation Class Library 4.2, when used with:
 * Microsoft Visual C++ 2.0 Professional Edition

-



This article was previously published under Q130867



SYMPTOMS
Some containers respond to change notifications in Paste Link objects by calling GetData on the linked object with a pointer to a valid DVTARGETDEVICE. This is usually a printer device or something other than the display context, which can be created by the server. In the case where the container is a 16-bit Windows-based application, this may cause an assertion in AFXWIN1.INL line 457.



CAUSE
In the case of a 16-bit Windows-based container application, MFCANS32.DLL attempts to translate the fields of the 16-bit DVTARGETDEVICE structure to 32-bit equivalents and pass the new structure on to the 32-bit MFC-based server application. In doing this, it uses a copy of the DVTARGETDEVICE structure containing mis-ordered fields. Specifically, the tdDeviceNameOffset and the tdDriverNameOffset fields are reversed in order. This causes any server that attempts to use the DVTARGETDEVICE to create a valid device context to fail when it uses these fields to call ::CreateDC.

In the MSVC20\MFC\SRC\OLEMISC.CPP module, the utility function _AfxOleCreateDC does not check the return code from ::CreateDC and returns an invalid HDC as a result. Later, that handle is attached to a CDC object. When AFXWIN1.INL's CDC::GetDeviceCaps function is called, it validates the HDC member that was attached, and that is where the assertion occurs. Depending on the circumstances and container application being used, the symptom may be different.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Microsoft Visual C++, 32-bit Edition, version 2.1 for x86 platforms.

Additional query words: 2.00 createdc dvtargetdevice mfcans32

Keywords: kbbug kbfix KB130867

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.