From c36ed586e25eb9c3f822d595be2b0ef83a2b9fbc Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 4 Apr 2021 02:58:59 +0300 Subject: [PATCH] Fix MoveFileExFromAppW. --- tdutils/td/utils/port/FromApp.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tdutils/td/utils/port/FromApp.h b/tdutils/td/utils/port/FromApp.h index bab7324a8..71cdfb9bb 100644 --- a/tdutils/td/utils/port/FromApp.h +++ b/tdutils/td/utils/port/FromApp.h @@ -76,11 +76,15 @@ inline BOOL DeleteFileFromAppW(_In_ LPCWSTR lpFileName) { } inline BOOL MoveFileExFromAppW(_In_ LPCWSTR lpExistingFileName, _In_ LPCWSTR lpNewFileName, _In_ DWORD dwFlags) { - auto func = get_from_app_function<4>("MoveFileFromAppW", &MoveFileEx); - if (func != &MoveFileEx && (dwFlags & MOVEFILE_REPLACE_EXISTING) != 0) { + auto func = get_from_app_function<4>("MoveFileFromAppW", &MoveFile); + if (func == &MoveFile || (dwFlags & ~MOVEFILE_REPLACE_EXISTING) != 0) { + // if can't find MoveFileFromAppW or have unsupported flags, call MoveFileEx directly + return MoveFileEx(lpExistingFileName, lpNewFileName, dwFlags); + } + if ((dwFlags & MOVEFILE_REPLACE_EXISTING) != 0) { td::DeleteFileFromAppW(lpNewFileName); } - return func(lpExistingFileName, lpNewFileName, dwFlags); + return func(lpExistingFileName, lpNewFileName); } inline HANDLE FindFirstFileExFromAppW(_In_ LPCWSTR lpFileName, _In_ FINDEX_INFO_LEVELS fInfoLevelId,