summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndy Russell <arussell123@gmail.com>2019-02-21 20:21:50 -0500
committerAndy Russell <arussell123@gmail.com>2019-03-06 12:28:38 -0500
commit9e5def9616aba274a6c3138d9f66e778d50c35e0 (patch)
treeea75e44389d8de50225c940509d7b4f592013d14 /src
parent7f19f161f24c9a02ff8c3f73122d0b015039221f (diff)
downloadrust-9e5def9616aba274a6c3138d9f66e778d50c35e0.tar.gz
rust-lldb: fix crash when printing empty string
Diffstat (limited to 'src')
-rw-r--r--src/etc/lldb_rust_formatters.py2
-rw-r--r--src/test/debuginfo/empty-string.rs35
2 files changed, 37 insertions, 0 deletions
diff --git a/src/etc/lldb_rust_formatters.py b/src/etc/lldb_rust_formatters.py
index 2c651c90f82..fdc1c4fa0cc 100644
--- a/src/etc/lldb_rust_formatters.py
+++ b/src/etc/lldb_rust_formatters.py
@@ -290,6 +290,8 @@ def print_array_of_values(array_name, data_ptr_val, length, internal_dict):
def read_utf8_string(ptr_val, byte_count):
+ if byte_count == 0:
+ return '""'
error = lldb.SBError()
process = ptr_val.get_wrapped_value().GetProcess()
data = process.ReadMemory(ptr_val.as_integer(), byte_count, error)
diff --git a/src/test/debuginfo/empty-string.rs b/src/test/debuginfo/empty-string.rs
new file mode 100644
index 00000000000..8c5f67a6604
--- /dev/null
+++ b/src/test/debuginfo/empty-string.rs
@@ -0,0 +1,35 @@
+// ignore-windows failing on win32 bot
+// ignore-android: FIXME(#10381)
+// compile-flags:-g
+// min-gdb-version: 7.7
+// min-lldb-version: 310
+
+// === GDB TESTS ===================================================================================
+
+// gdb-command: run
+
+// gdb-command: print empty_string
+// gdb-check:$1 = ""
+
+// gdb-command: print empty_str
+// gdb-check:$2 = ""
+
+// === LLDB TESTS ==================================================================================
+
+// lldb-command: run
+
+// lldb-command: fr v empty_string
+// lldb-check:[...]empty_string = ""
+
+// lldb-command: fr v empty_str
+// lldb-check:[...]empty_str = ""
+
+fn main() {
+ let empty_string = String::new();
+
+ let empty_str = "";
+
+ zzz(); // #break
+}
+
+fn zzz() {}