================
@@ -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),
----------------
charles-zablit wrote:

Fixed, thanks

https://github.com/llvm/llvm-project/pull/206114
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to