From f9ebdac1c2b4273a8ede9fe602b2232bc88997cf Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Fri, 23 Dec 2016 18:07:09 +0100 Subject: [PATCH] Return failure in case we got an invalid handle Signed-off-by: Sven Strickroth --- src/Git/GitStatus.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Git/GitStatus.cpp b/src/Git/GitStatus.cpp index 2a92d30dd..c23d769e8 100644 --- a/src/Git/GitStatus.cpp +++ b/src/Git/GitStatus.cpp @@ -26,6 +26,7 @@ #include "gitindex.h" #include "ShellCache.h" #include "SysInfo.h" +#include "SmartHandle.h" extern CGitAdminDirMap g_AdminDirMap; extern CGitIndexFileMap g_IndexFileMap; @@ -294,7 +295,9 @@ int GitStatus::GetFileList(CString path, std::vector &list) { path += L"\\*.*"; WIN32_FIND_DATA data; - HANDLE handle = ::FindFirstFileEx(path, SysInfo::Instance().IsWin7OrLater() ? FindExInfoBasic : FindExInfoStandard, &data, FindExSearchNameMatch, nullptr, SysInfo::Instance().IsWin7OrLater() ? FIND_FIRST_EX_LARGE_FETCH : 0); + CAutoFindFile handle = ::FindFirstFileEx(path, SysInfo::Instance().IsWin7OrLater() ? FindExInfoBasic : FindExInfoStandard, &data, FindExSearchNameMatch, nullptr, SysInfo::Instance().IsWin7OrLater() ? FIND_FIRST_EX_LARGE_FETCH : 0); + if (!handle) + return -1; do { if (wcscmp(data.cFileName, L".git") == 0) @@ -318,7 +321,7 @@ int GitStatus::GetFileList(CString path, std::vector &list) }while(::FindNextFile(handle, &data)); - FindClose(handle); + handle.CloseHandle(); // manually close handle here in order to keep handles open as short as possible std::sort(list.begin(), list.end(), SortCGitFileName); return 0; -- 2.11.4.GIT