From 934b1fb7453823e097a77df45de23315f8de0fa0 Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Tue, 26 Aug 2014 21:28:29 +0200 Subject: [PATCH] Handle gitdll exceptions Signed-off-by: Sven Strickroth --- src/Git/Git.cpp | 16 ++++++++++++---- src/TortoiseGitBlame/TortoiseGitBlameData.cpp | 11 ++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/Git/Git.cpp b/src/Git/Git.cpp index 03e9d7083..ba06a25ff 100644 --- a/src/Git/Git.cpp +++ b/src/Git/Git.cpp @@ -2378,10 +2378,18 @@ int CGit::GetDiffPath(CTGitPathList *PathList, CGitHash *hash1, CGitHash *hash2, CAutoLocker lock(g_Git.m_critGitDllSec); - if(arg == NULL) - diff = GetGitDiff(); - else - git_open_diff(&diff, arg); + try + { + if(!arg) + diff = GetGitDiff(); + else + git_open_diff(&diff, arg); + } + catch (char* e) + { + MessageBox(nullptr, _T("Could not get diff.\nlibgit reported:\n") + CString(e), _T("TortoiseGit"), MB_OK); + return -1; + } if(diff ==NULL) return -1; diff --git a/src/TortoiseGitBlame/TortoiseGitBlameData.cpp b/src/TortoiseGitBlame/TortoiseGitBlameData.cpp index d8a2c3218..8e6237a57 100644 --- a/src/TortoiseGitBlame/TortoiseGitBlameData.cpp +++ b/src/TortoiseGitBlame/TortoiseGitBlameData.cpp @@ -224,7 +224,16 @@ void CTortoiseGitBlameData::ParseBlameOutput(BYTE_VECTOR &data, CGitHashMap & Ha for (auto it = hashes.begin(), it_end = hashes.end(); it != it_end; ++it) { CGitHash hash = *it; - GitRev *pRev = GetRevForHash(HashToRev, hash); + GitRev *pRev; + try + { + pRev = GetRevForHash(HashToRev, hash); + } + catch (char* e) + { + MessageBox(nullptr, _T("Could not get revision by hash \"") + hash.ToString() + _T("\".\nlibgit reported:\n") + CString(e), _T("TortoiseGit"), MB_OK); + return; + } if (pRev) { authors.push_back(pRev->GetAuthorName()); -- 2.11.4.GIT