[Lldb-commits] [lldb] a2681c4 - Don't push null ExecutionContext on CommandInterp exectx stack

Jason Molenda via lldb-commits lldb-commits at lists.llvm.org
Tue Apr 26 18:32:23 PDT 2022


Author: Jason Molenda
Date: 2022-04-26T18:32:18-07:00
New Revision: a2681c43308c5d1748a7ade4df5188972a3dd8aa

URL: https://github.com/llvm/llvm-project/commit/a2681c43308c5d1748a7ade4df5188972a3dd8aa
DIFF: https://github.com/llvm/llvm-project/commit/a2681c43308c5d1748a7ade4df5188972a3dd8aa.diff

LOG: Don't push null ExecutionContext on CommandInterp exectx stack

The driver can push a null ExecutionContext on to this stack,
and later calls to SBCommandInterpreter::HandleCommand which
don't specify an ExecutionContext can pull an entry from the
stack, resulting in settings that aren't applied.

Differential Revision: https://reviews.llvm.org/D111209
rdar://81489207

Added: 
    

Modified: 
    lldb/source/Interpreter/CommandInterpreter.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp
index 760a33ac09295..c779795509a22 100644
--- a/lldb/source/Interpreter/CommandInterpreter.cpp
+++ b/lldb/source/Interpreter/CommandInterpreter.cpp
@@ -3050,9 +3050,15 @@ void CommandInterpreter::IOHandlerInputComplete(IOHandler &io_handler,
 
   StartHandlingCommand();
 
-  OverrideExecutionContext(m_debugger.GetSelectedExecutionContext());
-  auto finalize = llvm::make_scope_exit([this]() {
-    RestoreExecutionContext();
+  ExecutionContext exe_ctx = m_debugger.GetSelectedExecutionContext();
+  bool pushed_exe_ctx = false;
+  if (exe_ctx.HasTargetScope()) {
+    OverrideExecutionContext(exe_ctx);
+    pushed_exe_ctx = true;
+  }
+  auto finalize = llvm::make_scope_exit([this, pushed_exe_ctx]() {
+    if (pushed_exe_ctx)
+      RestoreExecutionContext();
   });
 
   lldb_private::CommandReturnObject result(m_debugger.GetUseColor());


        


More information about the lldb-commits mailing list