[Lldb-commits] [lldb] r286170 - UserExpression::Evaluate only returns a non-empty ValueObjectSP

Jim Ingham via lldb-commits lldb-commits at lists.llvm.org
Mon Nov 7 14:47:01 PST 2016


Author: jingham
Date: Mon Nov  7 16:47:01 2016
New Revision: 286170

URL: http://llvm.org/viewvc/llvm-project?rev=286170&view=rev
Log:
UserExpression::Evaluate only returns a non-empty ValueObjectSP
if it returns eExpressionCompleted.  Don't try to get the error
from the ValueObjectSP if that's not true.

I just have a report of this from the field, I don't know how
to make it fail yet.

<rdar://problem/29113004>

Modified:
    lldb/trunk/source/Expression/UserExpression.cpp
    lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp

Modified: lldb/trunk/source/Expression/UserExpression.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/UserExpression.cpp?rev=286170&r1=286169&r2=286170&view=diff
==============================================================================
--- lldb/trunk/source/Expression/UserExpression.cpp (original)
+++ lldb/trunk/source/Expression/UserExpression.cpp Mon Nov  7 16:47:01 2016
@@ -158,6 +158,7 @@ lldb::ExpressionResults UserExpression::
     if (log)
       log->Printf("== [UserExpression::Evaluate] Passed a NULL target, can't "
                   "run expressions.");
+    error.SetErrorString("expression passed a null target");
     return lldb::eExpressionSetupError;
   }
 

Modified: lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp?rev=286170&r1=286169&r2=286170&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp (original)
+++ lldb/trunk/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp Mon Nov  7 16:47:01 2016
@@ -737,8 +737,12 @@ Error PlatformPOSIX::EvaluateLibdlExpres
   expr_options.SetTimeoutUsec(2000000);  // 2 seconds
 
   Error expr_error;
-  UserExpression::Evaluate(exe_ctx, expr_options, expr_cstr, expr_prefix,
-                           result_valobj_sp, expr_error);
+  ExpressionResults result =
+      UserExpression::Evaluate(exe_ctx, expr_options, expr_cstr, expr_prefix,
+                               result_valobj_sp, expr_error);
+  if (result != eExpressionCompleted)
+    return expr_error;
+
   if (result_valobj_sp->GetError().Fail())
     return result_valobj_sp->GetError();
   return Error();




More information about the lldb-commits mailing list