summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/DataExtractor.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-06-17 23:50:44 +0000
committerGreg Clayton <gclayton@apple.com>2011-06-17 23:50:44 +0000
commit4e4294bdeee8d41b74f8ddf671aa00952b645c3d (patch)
treea65127dfa5acbb60ff3cc22537482de0ccc5bbcd /lldb/source/Core/DataExtractor.cpp
parent1240f4e53a6eb0a0f25b714d0e994137bc3d26c5 (diff)
downloadbcm5719-llvm-4e4294bdeee8d41b74f8ddf671aa00952b645c3d.tar.gz
bcm5719-llvm-4e4294bdeee8d41b74f8ddf671aa00952b645c3d.zip
Added a new format for displaying an array of characters: eFormatCharArray
This us useful because sometomes you have to show a single character as: 'a' (using eFormatChar) and other times you might have an array of single charcters for display as: 'a' 'b' 'c', and other times you might want to show the contents of buffer of characters that can contain non printable chars: "\0\x22\n123". This also fixes an issue that currently happens when you have a single character C string (const char *a = "a"; or char b[1] = { 'b' };) that was being output as "'a'" incorrectly due to the way the eFormatChar format output worked. llvm-svn: 133316
Diffstat (limited to 'lldb/source/Core/DataExtractor.cpp')
-rw-r--r--lldb/source/Core/DataExtractor.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/lldb/source/Core/DataExtractor.cpp b/lldb/source/Core/DataExtractor.cpp
index bc26c8645e1..9d665735534 100644
--- a/lldb/source/Core/DataExtractor.cpp
+++ b/lldb/source/Core/DataExtractor.cpp
@@ -1354,6 +1354,7 @@ DataExtractor::Dump
else
if (item_format != eFormatChar &&
item_format != eFormatCharPrintable &&
+ item_format != eFormatCharArray &&
count > 0)
{
s->PutChar(' ');
@@ -1397,6 +1398,7 @@ DataExtractor::Dump
case eFormatChar:
case eFormatCharPrintable:
+ case eFormatCharArray:
{
// If we are only printing one character surround it with single
// quotes
@@ -1406,7 +1408,7 @@ DataExtractor::Dump
uint32_t ch = GetMaxU64(&offset, item_byte_size);
if (isprint(ch))
s->Printf ("%c", ch);
- else if (item_format == eFormatChar)
+ else if (item_format != eFormatCharPrintable)
{
switch (ch)
{
@@ -1608,7 +1610,7 @@ DataExtractor::Dump
case eFormatVectorOfChar:
s->PutChar('{');
- offset = Dump (s, start_offset, eFormatChar, 1, item_byte_size, item_byte_size, LLDB_INVALID_ADDRESS, 0, 0);
+ offset = Dump (s, start_offset, eFormatCharArray, 1, item_byte_size, item_byte_size, LLDB_INVALID_ADDRESS, 0, 0);
s->PutChar('}');
break;
OpenPOWER on IntegriCloud