Commit cf403dbb authored by mercury233's avatar mercury233

fix SHFileOperation in FileSystem::DeleteDir

parent 501d07b2
......@@ -18,6 +18,7 @@
#define NOMINMAX
#include <Windows.h>
#include <shellapi.h>
class FileSystem {
public:
......@@ -71,13 +72,18 @@ public:
}
static bool DeleteDir(const wchar_t* wdir) {
wchar_t pdir[256];
size_t len = std::wcslen(wdir);
wchar_t pdir[1024 + 1]{};
if(len >= 1024)
return false;
BufferIO::CopyWideString(wdir, pdir);
// pFrom must be double-null terminated for SHFileOperationW
// pdir[len] is already '\0' and pdir[len+1] is '\0' due to zero-init
SHFILEOPSTRUCTW lpFileOp{};
lpFileOp.hwnd = nullptr;
lpFileOp.wFunc = FO_DELETE;
lpFileOp.pFrom = pdir;
lpFileOp.pTo = 0;
lpFileOp.pTo = nullptr;
lpFileOp.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT;
return SHFileOperationW(&lpFileOp) == 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment