From 8954d4eb09d569424fc4161bcfc7aa37c3e37eb2 Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Sun, 19 Mar 2006 08:55:37 +0000 Subject: [PATCH] PATCH: [ 1453252 ] Fix closing filecompare after error --- Src/Changes.txt | 2 ++ Src/MainFrm.cpp | 7 +------ Src/MergeDoc.cpp | 16 +++++++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Src/Changes.txt b/Src/Changes.txt index 26c28a231..c5834e29a 100644 --- a/Src/Changes.txt +++ b/Src/Changes.txt @@ -5,6 +5,8 @@ Add new items to top. 2006-03-19 Kimmo PATCH: [ 1449892 ] Add compare method to configlog Src: ConfigLog.cpp ConfigLog.h MainFrm.cpp + PATCH: [ 1453252 ] Fix closing filecompare after error + Src: MainFrm.cpp MergeDoc.cpp 2006-03-17 Tim PATCH: [ 1449571 ] Add '*.pm' and '*.plx' to Perl highlighter diff --git a/Src/MainFrm.cpp b/Src/MainFrm.cpp index d3bfe40e4..0d12504a0 100644 --- a/Src/MainFrm.cpp +++ b/Src/MainFrm.cpp @@ -632,6 +632,7 @@ CMainFrame::ShowMergeDoc(CDirDoc * pDirDoc, const FileLocation & ifilelocLeft, } } + // Note that OpenDocs() takes care of closing compare window when needed. OPENRESULTS_TYPE openResults = pMergeDoc->OpenDocs(filelocLeft, filelocRight, bROLeft, bRORight); @@ -645,12 +646,6 @@ CMainFrame::ShowMergeDoc(CDirDoc * pDirDoc, const FileLocation & ifilelocLeft, else MDINext(); } - else - { - // Close file compare when loading files fails - CWnd* pWnd = pMergeDoc->GetParentFrame(); - pWnd->DestroyWindow(); - } return openResults; } diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index 4d7285998..bb81c0509 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -2579,7 +2579,7 @@ bool CMergeDoc::IsValidCodepageForMergeEditor(unsigned cp) const } /** - * @brief Loads files and does initial rescan + * @brief Loads files and does initial rescan. * @param filelocLeft [in] File to open to left side (path & encoding info) * @param fileLocRight [in] File to open to right side (path & encoding info) * @param bROLeft [in] Is left file read-only @@ -2588,8 +2588,7 @@ bool CMergeDoc::IsValidCodepageForMergeEditor(unsigned cp) const * @todo Options are still read from CMainFrame, this will change * @sa CMainFrame::ShowMergeDoc() */ -OPENRESULTS_TYPE -CMergeDoc::OpenDocs(FileLocation filelocLeft, FileLocation filelocRight, +OPENRESULTS_TYPE CMergeDoc::OpenDocs(FileLocation filelocLeft, FileLocation filelocRight, BOOL bROLeft, BOOL bRORight) { BOOL bBinary = FALSE; @@ -2700,12 +2699,19 @@ CMergeDoc::OpenDocs(FileLocation filelocLeft, FileLocation filelocRight, // Bail out if either side failed if (!FileLoadResult::IsOk(nLeftSuccess) || !FileLoadResult::IsOk(nRightSuccess)) { + OPENRESULTS_TYPE retVal = OPENRESULTS_FAILED_MISC; if (FileLoadResult::IsBinary(nLeftSuccess) || FileLoadResult::IsBinary(nRightSuccess)) { CompareBinaries(sLeftFile, sRightFile, nLeftSuccess, nRightSuccess); - return OPENRESULTS_FAILED_BINARY; + retVal = OPENRESULTS_FAILED_BINARY; } - return OPENRESULTS_FAILED_MISC; + CChildFrame *pFrame = GetParentFrame(); + if (pFrame) + { + // Use verify macro to trap possible error in debug. + VERIFY(pFrame->DestroyWindow()); + } + return retVal; } // Warn user if file load was lossy (bad encoding) -- 2.11.0