aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectMemory.cpp
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2023-05-01 20:34:51 -0700
committerJonas Devlieghere <jonas@devlieghere.com>2023-05-01 21:08:23 -0700
commitfdbe7c7faa547b16bf6da0fedbb7234b6ee3adef (patch)
treede943ecab10dba4e794771be711ba6d2633f2fd6 /lldb/source/Commands/CommandObjectMemory.cpp
parent65365cff3b4ca62d20a6e4588375a48b4f386b69 (diff)
downloadllvm-fdbe7c7faa547b16bf6da0fedbb7234b6ee3adef.zip
llvm-fdbe7c7faa547b16bf6da0fedbb7234b6ee3adef.tar.gz
llvm-fdbe7c7faa547b16bf6da0fedbb7234b6ee3adef.tar.bz2
[lldb] Refactor OptionValue to return a std::optional (NFC)
Refactor OptionValue to return a std::optional instead of taking a fail value. This allows the caller to handle situations where there's no value, instead of being unable to distinguish between the absence of a value and the value happening the match the fail value. When a fail value is required, std::optional::value_or() provides the same functionality.
Diffstat (limited to 'lldb/source/Commands/CommandObjectMemory.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectMemory.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp
index 70dd6ea..9034243 100644
--- a/lldb/source/Commands/CommandObjectMemory.cpp
+++ b/lldb/source/Commands/CommandObjectMemory.cpp
@@ -1047,18 +1047,20 @@ protected:
DataBufferHeap buffer;
if (m_memory_options.m_string.OptionWasSet()) {
- llvm::StringRef str = m_memory_options.m_string.GetStringValue();
- if (str.empty()) {
+ std::optional<llvm::StringRef> str =
+ m_memory_options.m_string.GetStringValue();
+ if (!str) {
result.AppendError("search string must have non-zero length.");
return false;
}
- buffer.CopyData(str);
+ buffer.CopyData(*str);
} else if (m_memory_options.m_expr.OptionWasSet()) {
StackFrame *frame = m_exe_ctx.GetFramePtr();
ValueObjectSP result_sp;
if ((eExpressionCompleted ==
process->GetTarget().EvaluateExpression(
- m_memory_options.m_expr.GetStringValue(), frame, result_sp)) &&
+ m_memory_options.m_expr.GetStringValue().value_or(""), frame,
+ result_sp)) &&
result_sp) {
uint64_t value = result_sp->GetValueAsUnsigned(0);
std::optional<uint64_t> size =