diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2023-05-01 20:34:51 -0700 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2023-05-01 21:08:23 -0700 |
commit | fdbe7c7faa547b16bf6da0fedbb7234b6ee3adef (patch) | |
tree | de943ecab10dba4e794771be711ba6d2633f2fd6 /lldb/source/Commands/CommandObjectMemory.cpp | |
parent | 65365cff3b4ca62d20a6e4588375a48b4f386b69 (diff) | |
download | llvm-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.cpp | 10 |
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 = |