Knowledge Base

FIX: Exception in DrawCli When Displaying Summary Information

Article ID: 153963

Article Last Modified on 12/2/2003


APPLIES TO


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.

Additional query words: kbVC400bug 4.00 4.10 4.20 mfcole vcfixlist420 kbole CodeSam

Keywords: kbbug kbfix KB153963