diff options
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
| -rw-r--r-- | windows/driverlogic/src/driverlogic.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp index acc601811b..4cd1a6640a 100644 --- a/windows/driverlogic/src/driverlogic.cpp +++ b/windows/driverlogic/src/driverlogic.cpp @@ -818,24 +818,24 @@ std::filesystem::path GetCurrentModulePath() SetLastError(ERROR_SUCCESS); - size_t nextCapacity = 256; + size_t nextCapacity = MAX_PATH; + DWORD writtenChars = 0; do { - pathBuffer.reserve(nextCapacity); - - const auto writtenChars = GetModuleFileNameW(nullptr, &pathBuffer[0], static_cast<DWORD>(pathBuffer.capacity())); + pathBuffer.resize(nextCapacity); + writtenChars = GetModuleFileNameW(nullptr, &pathBuffer[0], static_cast<DWORD>(pathBuffer.size())); if (0 == writtenChars) { THROW_WINDOWS_ERROR(GetLastError(), "GetModuleFileNameW"); } - pathBuffer.resize(writtenChars); - - nextCapacity = 2 * pathBuffer.capacity(); + nextCapacity = 2 * pathBuffer.size(); } while (ERROR_INSUFFICIENT_BUFFER == GetLastError()); + pathBuffer.resize(writtenChars); + return std::filesystem::path(pathBuffer.begin(), pathBuffer.end()); } |
