diff options
author | Enrico Granata <egranata@apple.com> | 2014-01-23 01:21:18 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2014-01-23 01:21:18 +0000 |
commit | 90890bba0451532d3dbf794b1b5f8fa1fb5cafcc (patch) | |
tree | f496525fe6442cbf84deefa56d8e0eab5ba2f6d2 /lldb/source/DataFormatters/ValueObjectPrinter.cpp | |
parent | 76747120ca8a1522617a61e9f1d7751007c9f56f (diff) | |
download | bcm5719-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.cpp | 18 |
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 |