FIX: Exception in DrawCli When Displaying Summary Information (153963)
The information in this article applies to:
- Microsoft Visual C++ 4.0
- Microsoft Visual C++ 4.1
- Microsoft Visual C++, 32-bit Enterprise Edition 4.2
- Microsoft Visual C++, 32-bit Professional Edition 4.2
This article was previously published under Q153963 SYMPTOMS
When displaying the Summary Info for an existing DrawCli file with
Summary Info saved, DrawCli may crash with the following error:
Unhandled Exception : Access Violation
DrawCli is an MFC OLE sample that is shipped with Visual C++.
CAUSE
CSummInfo::ReadFromStorage does not set CSummInfo::m_pSection. This
behavior leaves a dangling pointer into memory that has been deleted.
RESOLUTION
Modify the ReadFromStorage as follows:
BOOL CSummInfo::ReadFromStorage( LPSTORAGE lpRootStg )
{
if (lpRootStg != NULL)
{
LPSTREAM lpStream = NULL;
if (FAILED(lpRootStg->OpenStream( szSummInfo,
NULL, STGM_SHARE_EXCLUSIVE|STGM_READ,
0, &lpStream )))
{
TRACE(_T("OpenStream failed\n"));
return FALSE;
}
else
{
if (!m_propSet.ReadFromStream( lpStream ))
{
TRACE(_T("ReadFromStream failed\n"));
return FALSE;
}
// add the following line
m_pSection = m_propSet.GetSection(FMTID_SummaryInformation);
lpStream->Release();
return TRUE;
}
}
return FALSE;
}
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
Visual C++ version 4.2.
Modification Type: | Major | Last Reviewed: | 12/2/2003 |
---|
Keywords: | kbbug kbfix KB153963 |
---|
|