summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Utility/Args.cpp7
-rw-r--r--lldb/unittests/Utility/ArgsTest.cpp26
2 files changed, 30 insertions, 3 deletions
diff --git a/lldb/source/Utility/Args.cpp b/lldb/source/Utility/Args.cpp
index 74a56f53a74..edcbf691bc0 100644
--- a/lldb/source/Utility/Args.cpp
+++ b/lldb/source/Utility/Args.cpp
@@ -640,14 +640,15 @@ std::string Args::EscapeLLDBCommandArgument(const std::string &arg,
case '\0':
chars_to_escape = " \t\\'\"`";
break;
- case '\'':
- chars_to_escape = "";
- break;
case '"':
chars_to_escape = "$\"`\\";
break;
+ case '`':
+ case '\'':
+ return arg;
default:
assert(false && "Unhandled quote character");
+ return arg;
}
std::string res;
diff --git a/lldb/unittests/Utility/ArgsTest.cpp b/lldb/unittests/Utility/ArgsTest.cpp
index ef63ab3f3df..b4bb9ca3cb0 100644
--- a/lldb/unittests/Utility/ArgsTest.cpp
+++ b/lldb/unittests/Utility/ArgsTest.cpp
@@ -188,3 +188,29 @@ TEST(ArgsTest, GetArgumentArrayRef) {
EXPECT_STREQ("foo", ref[0]);
EXPECT_STREQ("bar", ref[1]);
}
+
+TEST(ArgsTest, EscapeLLDBCommandArgument) {
+ const std::string foo = "foo'";
+ EXPECT_EQ("foo\\'", Args::EscapeLLDBCommandArgument(foo, '\0'));
+ EXPECT_EQ("foo'", Args::EscapeLLDBCommandArgument(foo, '\''));
+ EXPECT_EQ("foo'", Args::EscapeLLDBCommandArgument(foo, '`'));
+ EXPECT_EQ("foo'", Args::EscapeLLDBCommandArgument(foo, '"'));
+
+ const std::string bar = "bar\"";
+ EXPECT_EQ("bar\\\"", Args::EscapeLLDBCommandArgument(bar, '\0'));
+ EXPECT_EQ("bar\"", Args::EscapeLLDBCommandArgument(bar, '\''));
+ EXPECT_EQ("bar\"", Args::EscapeLLDBCommandArgument(bar, '`'));
+ EXPECT_EQ("bar\\\"", Args::EscapeLLDBCommandArgument(bar, '"'));
+
+ const std::string baz = "baz`";
+ EXPECT_EQ("baz\\`", Args::EscapeLLDBCommandArgument(baz, '\0'));
+ EXPECT_EQ("baz`", Args::EscapeLLDBCommandArgument(baz, '\''));
+ EXPECT_EQ("baz`", Args::EscapeLLDBCommandArgument(baz, '`'));
+ EXPECT_EQ("baz\\`", Args::EscapeLLDBCommandArgument(baz, '"'));
+
+ const std::string quux = "quux\t";
+ EXPECT_EQ("quux\\\t", Args::EscapeLLDBCommandArgument(quux, '\0'));
+ EXPECT_EQ("quux\t", Args::EscapeLLDBCommandArgument(quux, '\''));
+ EXPECT_EQ("quux\t", Args::EscapeLLDBCommandArgument(quux, '`'));
+ EXPECT_EQ("quux\t", Args::EscapeLLDBCommandArgument(quux, '"'));
+}
OpenPOWER on IntegriCloud