Module: wine Branch: refs/heads/master Commit: c29b7c352438669ee22961466360e926a831d313 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c29b7c352438669ee2296146...
Author: Aric Stewart aric@codeweavers.com Date: Fri Mar 3 10:08:32 2006 -0600
shell32: Skip dot directories in SHFileOperation.
In ShFileOperation when generating a file list with * wildcards, for example for deletion, do not include the dot directories (. and ..) in the list, because that cause the operation to spiral out of control.
---
dlls/shell32/shlfileop.c | 18 ++++++++---------- 1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c index e12df61..18d1133 100644 --- a/dlls/shell32/shlfileop.c +++ b/dlls/shell32/shlfileop.c @@ -779,7 +779,7 @@ static DWORD count_wildcard_files(LPCWST
while (res) { - dwCount++; + if (!IsDotDir(wfd.cFileName)) dwCount++; res = FindNextFileW(hFile, &wfd); }
@@ -879,18 +879,16 @@ static void parse_wildcard_files(FILE_LI WIN32_FIND_DATAW wfd; HANDLE hFile = FindFirstFileW(szFile, &wfd); LPWSTR szFullPath; - BOOL res = TRUE, bDir; - - while (res) + BOOL res; + + for (res = TRUE; res; res = FindNextFileW(hFile, &wfd)) { + if (IsDotDir(wfd.cFileName)) continue; szFullPath = wildcard_to_file(szFile, wfd.cFileName); - bDir = add_file_to_entry(&flList->feFiles[(*pdwListIndex)++], - szFullPath, TRUE); - HeapFree(GetProcessHeap(), 0, szFullPath); - res = FindNextFileW(hFile, &wfd); - - if (bDir) + if (add_file_to_entry(&flList->feFiles[(*pdwListIndex)++], + szFullPath, TRUE)) flList->bAnyDirectories = TRUE; + HeapFree(GetProcessHeap(), 0, szFullPath); }
FindClose(hFile);