diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -1707,6 +1707,7 @@ "invalid address argument \"%s\": %s\n", command[0].c_str(), error.AsCString()); result.SetStatus(eReturnStatusFailed); + return false; } } diff --git a/lldb/source/Plugins/Process/Windows/Common/ProcessDebugger.cpp b/lldb/source/Plugins/Process/Windows/Common/ProcessDebugger.cpp --- a/lldb/source/Plugins/Process/Windows/Common/ProcessDebugger.cpp +++ b/lldb/source/Plugins/Process/Windows/Common/ProcessDebugger.cpp @@ -460,7 +460,6 @@ info.SetMapped(MemoryRegionInfo::eNo); } - error.SetError(::GetLastError(), eErrorTypeWin32); LLDB_LOGV(log, "Memory region info for address {0}: readable={1}, " "executable={2}, writable={3}", diff --git a/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py b/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py --- a/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py +++ b/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py @@ -41,6 +41,12 @@ self.assertFalse(result.Succeeded()) self.assertRegexpMatches(result.GetError(), "Usage: memory region ADDR") + # Test that when the address fails to parse, we show an error and do not continue + interp.HandleCommand("memory region not_an_address", result) + self.assertFalse(result.Succeeded()) + self.assertEqual(result.GetError(), + "error: invalid address argument \"not_an_address\": address expression \"not_an_address\" evaluation failed\n") + # Now let's print the memory region starting at 0 which should always work. interp.HandleCommand("memory region 0x0", result) self.assertTrue(result.Succeeded())