Article ID: 153963 - Last Review: December 2, 2003 - Revision: 2.0

FIX: Exception in DrawCli When Displaying Summary Information

This article was previously published under Q153963
Expand all | Collapse all

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.

APPLIES TO
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
Keywords: 
kbbug kbfix KB153963
Retired KB ArticleRetired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
 

Article Translations