diff options
Diffstat (limited to 'lldb/source/DataFormatters/FormatManager.cpp')
| -rw-r--r-- | lldb/source/DataFormatters/FormatManager.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp index 5e0adcb..47456ba 100644 --- a/lldb/source/DataFormatters/FormatManager.cpp +++ b/lldb/source/DataFormatters/FormatManager.cpp @@ -662,7 +662,8 @@ FormatManager::GetFormat (ValueObject& valobj, log->Printf("[FormatManager::GetFormat] Search failed. Giving hardcoded a chance."); retval = GetHardcodedFormat(valobj, use_dynamic); } - else if (valobj_type) + + if (valobj_type && (!retval || !retval->NonCacheable())) { if (log) log->Printf("[FormatManager::GetFormat] Caching %p for type %s", @@ -719,7 +720,8 @@ FormatManager::GetSummaryFormat (ValueObject& valobj, log->Printf("[FormatManager::GetSummaryFormat] Search failed. Giving hardcoded a chance."); retval = GetHardcodedSummaryFormat(valobj, use_dynamic); } - else if (valobj_type) + + if (valobj_type && (!retval || !retval->NonCacheable())) { if (log) log->Printf("[FormatManager::GetSummaryFormat] Caching %p for type %s", @@ -777,7 +779,8 @@ FormatManager::GetSyntheticChildren (ValueObject& valobj, log->Printf("[FormatManager::GetSyntheticChildren] Search failed. Giving hardcoded a chance."); retval = GetHardcodedSyntheticChildren(valobj, use_dynamic); } - else if (valobj_type) + + if (valobj_type && (!retval || !retval->NonCacheable())) { if (log) log->Printf("[FormatManager::GetSyntheticChildren] Caching %p for type %s", @@ -822,7 +825,8 @@ FormatManager::GetValidator (ValueObject& valobj, log->Printf("[FormatManager::GetValidator] Search failed. Giving hardcoded a chance."); retval = GetHardcodedValidator(valobj, use_dynamic); } - else if (valobj_type) + + if (valobj_type && (!retval || !retval->NonCacheable())) { if (log) log->Printf("[FormatManager::GetValidator] Caching %p for type %s", @@ -1611,7 +1615,7 @@ FormatManager::LoadHardcodedFormatters() [](lldb_private::ValueObject& valobj, lldb::DynamicValueType, FormatManager& fmt_mgr) -> SyntheticChildren::SharedPointer { - static CXXSyntheticChildren::SharedPointer formatter_sp(new CXXSyntheticChildren(SyntheticChildren::Flags().SetCascades(true).SetSkipPointers(true).SetSkipReferences(true), + static CXXSyntheticChildren::SharedPointer formatter_sp(new CXXSyntheticChildren(SyntheticChildren::Flags().SetCascades(true).SetSkipPointers(true).SetSkipReferences(true).SetNonCacheable(true), "vector_type synthetic children", lldb_private::formatters::VectorTypeSyntheticFrontEndCreator)); if (valobj.GetClangType().IsVectorType(nullptr, nullptr)) |
