Fix a problem where the StringPrinter could be mistaking an empty string for a read...
authorEnrico Granata <egranata@apple.com>
Mon, 17 Nov 2014 23:14:11 +0000 (23:14 +0000)
committerEnrico Granata <egranata@apple.com>
Mon, 17 Nov 2014 23:14:11 +0000 (23:14 +0000)
llvm-svn: 222190

lldb/source/DataFormatters/StringPrinter.cpp
lldb/test/lang/cpp/wchar_t/TestCxxWCharT.py
lldb/test/lang/cpp/wchar_t/main.cpp

index be08cf2..52d03fc 100644 (file)
@@ -566,7 +566,7 @@ ReadUTFBufferAndDumpToStream (const ReadStringAndDumpToStreamOptions& options,
     else
         data_read = process_sp->ReadMemoryFromInferior(options.GetLocation(), (char*)buffer_sp->GetBytes(), bufferSPSize, error);
 
-    if (error.Fail() || data_read == 0)
+    if (error.Fail())
     {
         options.GetStream()->Printf("unable to read data");
         return true;
index bade12d..10804c1 100644 (file)
@@ -73,6 +73,8 @@ class CxxWCharTTestCase(TestBase):
         self.expect("frame variable mazeltov",
             substrs = ['(const wchar_t *) mazeltov = ','L"מזל טוב"'])
 
+        self.expect("frame variable ws_NULL",substrs = ['(wchar_t *) ws_NULL = 0x0'])
+        self.expect("frame variable ws_empty",substrs = [' L""'])
 
 if __name__ == '__main__':
     import atexit
index 6e533b5..258c1c1 100644 (file)
@@ -24,5 +24,7 @@ int main (int argc, char const *argv[])
     Foo<int> foo_x('a');
     Foo<wchar_t> foo_y(L'a');
     const wchar_t *mazeltov = L"מזל טוב";
+    wchar_t *ws_NULL = nullptr;
+    wchar_t *ws_empty = L"";
     return 0; // Set break point at this line.
 }