summaryrefslogtreecommitdiffstats
path: root/lldb/source/Commands/CommandObjectExpression.cpp
diff options
context:
space:
mode:
authorRaphael Isemann <teemperor@gmail.com>2018-07-12 22:28:52 +0000
committerRaphael Isemann <teemperor@gmail.com>2018-07-12 22:28:52 +0000
commit4d51a90297d34389b53c00c5cd6fa6f73998c298 (patch)
treefb8d42ce62a2a5e7bff1c397626c774ce51e3fee /lldb/source/Commands/CommandObjectExpression.cpp
parent3a1347721454c50c0f06cdf99388b8d38a49c408 (diff)
downloadbcm5719-llvm-4d51a90297d34389b53c00c5cd6fa6f73998c298.tar.gz
bcm5719-llvm-4d51a90297d34389b53c00c5cd6fa6f73998c298.zip
Get rid of the C-string parameter in DoExecute
Summary: This patch gets rid of the C-string parameter in the RawCommandObject::DoExecute function, making the code simpler and less memory unsafe. There seems to be a assumption in some command objects that this parameter could be a nullptr, but from what I can see the rest of the API doesn't actually allow this (and other command objects and related code pieces dereference this parameter without any checks). Especially CommandObjectRegexCommand has error handling code for a nullptr that is now gone. Reviewers: davide, jingham, teemperor Reviewed By: teemperor Subscribers: jingham, lldb-commits Differential Revision: https://reviews.llvm.org/D49207 llvm-svn: 336955
Diffstat (limited to 'lldb/source/Commands/CommandObjectExpression.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectExpression.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp
index 9373813b8d0..08959ff8473 100644
--- a/lldb/source/Commands/CommandObjectExpression.cpp
+++ b/lldb/source/Commands/CommandObjectExpression.cpp
@@ -318,7 +318,7 @@ CanBeUsedForElementCountPrinting(ValueObject &valobj) {
return Status();
}
-bool CommandObjectExpression::EvaluateExpression(const char *expr,
+bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr,
Stream *output_stream,
Stream *error_stream,
CommandReturnObject *result) {
@@ -508,19 +508,19 @@ void CommandObjectExpression::GetMultilineExpression() {
debugger.PushIOHandler(io_handler_sp);
}
-bool CommandObjectExpression::DoExecute(const char *command,
+bool CommandObjectExpression::DoExecute(llvm::StringRef command,
CommandReturnObject &result) {
m_fixed_expression.clear();
auto exe_ctx = GetCommandInterpreter().GetExecutionContext();
m_option_group.NotifyOptionParsingStarting(&exe_ctx);
- if (command[0] == '\0') {
+ if (command.empty()) {
GetMultilineExpression();
return result.Succeeded();
}
OptionsWithRaw args(command);
- const char *expr = args.GetRawPart().c_str();
+ llvm::StringRef expr = args.GetRawPart();
if (args.HasArgs()) {
if (!ParseOptionsAndNotify(args.GetArgs(), result, m_option_group, exe_ctx))
@@ -584,7 +584,7 @@ bool CommandObjectExpression::DoExecute(const char *command,
}
}
// No expression following options
- else if (expr[0] == '\0') {
+ else if (expr.empty()) {
GetMultilineExpression();
return result.Succeeded();
}
OpenPOWER on IntegriCloud