Author: jingham Date: Mon Oct 17 18:59:41 2016 New Revision: 284439 URL: http://llvm.org/viewvc/llvm-project?rev=284439&view=rev Log: Fix a crash in expressions with fixits in the dummy target.
In the expression command, if the target is NULL, you have to use the dummy target. <rdar://problem/28811687> Modified: lldb/trunk/packages/Python/lldbsuite/test/expression_command/fixits/TestFixIts.py lldb/trunk/source/Commands/CommandObjectExpression.cpp Modified: lldb/trunk/packages/Python/lldbsuite/test/expression_command/fixits/TestFixIts.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/fixits/TestFixIts.py?rev=284439&r1=284438&r2=284439&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/fixits/TestFixIts.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/fixits/TestFixIts.py Mon Oct 17 18:59:41 2016 @@ -23,11 +23,18 @@ class ExprCommandWithFixits(TestBase): self.main_source_spec = lldb.SBFileSpec(self.main_source) @skipUnlessDarwin - def test(self): - """Test calling a function that throws and ObjC exception.""" + def test_with_target(self): + """Test calling expressions with errors that can be fixed by the FixIts.""" self.build() self.try_expressions() + def test_with_dummy_target(self): + """Test calling expressions in the dummy target with errors that can be fixed by the FixIts.""" + ret_val = lldb.SBCommandReturnObject() + result = self.dbg.GetCommandInterpreter().HandleCommand("expression ((1 << 16) - 1))", ret_val) + self.assertEqual(result, lldb.eReturnStatusSuccessFinishResult, "The expression was successful.") + self.assertTrue("Fix-it applied" in ret_val.GetError(), "Found the applied FixIt.") + def try_expressions(self): """Test calling expressions with errors that can be fixed by the FixIts.""" exe_name = "a.out" Modified: lldb/trunk/source/Commands/CommandObjectExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectExpression.cpp?rev=284439&r1=284438&r2=284439&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectExpression.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectExpression.cpp Mon Oct 17 18:59:41 2016 @@ -614,6 +614,9 @@ bool CommandObjectExpression::DoExecute( if (EvaluateExpression(expr, &(result.GetOutputStream()), &(result.GetErrorStream()), &result)) { Target *target = m_interpreter.GetExecutionContext().GetTargetPtr(); + if (!target) + target = GetDummyTarget(); + if (!m_fixed_expression.empty() && target->GetEnableNotifyAboutFixIts()) { CommandHistory &history = m_interpreter.GetCommandHistory(); // FIXME: Can we figure out what the user actually typed (e.g. some alias _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits