summaryrefslogtreecommitdiffstats
path: root/lldb/source/DataFormatters/ValueObjectPrinter.cpp
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2014-01-23 01:21:18 +0000
committerEnrico Granata <egranata@apple.com>2014-01-23 01:21:18 +0000
commit90890bba0451532d3dbf794b1b5f8fa1fb5cafcc (patch)
treef496525fe6442cbf84deefa56d8e0eab5ba2f6d2 /lldb/source/DataFormatters/ValueObjectPrinter.cpp
parent76747120ca8a1522617a61e9f1d7751007c9f56f (diff)
downloadbcm5719-llvm-90890bba0451532d3dbf794b1b5f8fa1fb5cafcc.tar.gz
bcm5719-llvm-90890bba0451532d3dbf794b1b5f8fa1fb5cafcc.zip
If a user specifies a format option to frame variable or expression, that format should prevail over whatever format(s) a summary specifies
(see test case for an example) llvm-svn: 199857
Diffstat (limited to 'lldb/source/DataFormatters/ValueObjectPrinter.cpp')
-rw-r--r--lldb/source/DataFormatters/ValueObjectPrinter.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/lldb/source/DataFormatters/ValueObjectPrinter.cpp b/lldb/source/DataFormatters/ValueObjectPrinter.cpp
index 5c7f48b600b..f8a9151b4a6 100644
--- a/lldb/source/DataFormatters/ValueObjectPrinter.cpp
+++ b/lldb/source/DataFormatters/ValueObjectPrinter.cpp
@@ -282,17 +282,15 @@ ValueObjectPrinter::GetValueSummaryError (std::string& value,
std::string& summary,
std::string& error)
{
- if (options.m_format != eFormatDefault && options.m_format != m_valobj->GetFormat())
+ lldb::Format original_format;
+ bool custom_format = options.m_format != eFormatDefault && options.m_format != m_valobj->GetFormat();
+ if (custom_format)
{
- m_valobj->GetValueAsCString(options.m_format,
- value);
- }
- else
- {
- const char* val_cstr = m_valobj->GetValueAsCString();
- if (val_cstr)
- value.assign(val_cstr);
+ original_format = m_valobj->GetFormat();
+ m_valobj->SetFormat(options.m_format);
}
+ const char* val_cstr = m_valobj->GetValueAsCString();
+ value.assign(val_cstr ? val_cstr : "");
const char* err_cstr = m_valobj->GetError().AsCString();
if (err_cstr)
error.assign(err_cstr);
@@ -314,6 +312,8 @@ ValueObjectPrinter::GetValueSummaryError (std::string& value,
}
}
}
+ if (custom_format)
+ m_valobj->SetFormat(original_format);
}
bool
OpenPOWER on IntegriCloud