[Lldb-commits] [lldb] r192259 - <rdar://problem/14923930>

Enrico Granata egranata at apple.com
Tue Oct 8 17:33:55 PDT 2013


Author: enrico
Date: Tue Oct  8 19:33:55 2013
New Revision: 192259

URL: http://llvm.org/viewvc/llvm-project?rev=192259&view=rev
Log:
<rdar://problem/14923930>

Constant ValueObjects should clear their description as well as their summary. Rationale being that both can depend on deeper-than-constified data
so both are subject to changes in "unpredictable" ways
To see this consider repeatedly po'ing a persistent variable of a type whose -description result changes at each invocation


Modified:
    lldb/trunk/source/Core/ValueObject.cpp

Modified: lldb/trunk/source/Core/ValueObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=192259&r1=192258&r2=192259&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObject.cpp (original)
+++ lldb/trunk/source/Core/ValueObject.cpp Tue Oct  8 19:33:55 2013
@@ -171,13 +171,12 @@ ValueObject::UpdateValueIfNeeded (bool u
     // we have an error or not
     if (GetIsConstant())
     {
-        // if you were asked to update your formatters, but did not get a chance to do it
-        // clear your own values (this serves the purpose of faking a stop-id for frozen
-        // objects (which are regarded as constant, but could have changes behind their backs
-        // because of the frozen-pointer depth limit)
-		// TODO: decouple summary from value and then remove this code and only force-clear the summary
+        // if you are constant, things might still have changed behind your back
+        // (e.g. you are a frozen object and things have changed deeper than you cared to freeze-dry yourself)
+        // in this case, your value has not changed, but "computed" entries might have, so you might now have
+        // a different summary, or a different object description. clear these so we will recompute them
         if (update_format && !did_change_formats)
-            ClearUserVisibleData(eClearUserVisibleDataItemsSummary);
+            ClearUserVisibleData(eClearUserVisibleDataItemsSummary | eClearUserVisibleDataItemsDescription);
         return m_error.Success();
     }
 





More information about the lldb-commits mailing list