================
@@ -567,42 +586,29 @@ static std::optional<std::string>
GetFileNameFromHandleFallback(HANDLE hFile) {
if (!pMem)
return std::nullopt;
- std::array<wchar_t, MAX_PATH + 1> mapped_filename;
- if (!::GetMappedFileNameW(::GetCurrentProcess(), pMem.get(),
- mapped_filename.data(), mapped_filename.size()))
- return std::nullopt;
-
- return ConvertNtDevicePathToDosPath(mapped_filename);
+ return GetMappedFileDosPath(::GetCurrentProcess(), pMem.get());
}
static std::optional<std::string> GetFileNameByLoadAddress(HANDLE process,
LPVOID base_addr) {
- std::array<wchar_t, MAX_PATH + 1> module_filename;
- DWORD len =
- ::GetModuleFileNameExW(process, reinterpret_cast<HMODULE>(base_addr),
- module_filename.data(), module_filename.size());
- if (len > 0 && len < module_filename.size()) {
- std::string path_utf8;
- llvm::convertWideToUTF8(std::wstring(module_filename.data(), len),
- path_utf8);
- return path_utf8;
+ std::vector<wchar_t> module_filename(MAX_PATH + 1);
+ while (module_filename.size() <= PATHCCH_MAX_CCH) {
+ DWORD len =
+ ::GetModuleFileNameExW(process, reinterpret_cast<HMODULE>(base_addr),
+ module_filename.data(), module_filename.size());
+ if (len == 0)
+ break; // Not loaded as a module; fall back to the mapped-file query.
+ if (len < module_filename.size()) {
+ std::string path_utf8;
+ llvm::convertWideToUTF8(std::wstring(module_filename.data(), len),
----------------
Nerixyz wrote:
This could take a `std::wstring_view` now.
https://github.com/llvm/llvm-project/pull/206114
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits