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

Reply via email to