[Lldb-commits] [lldb] 0c58e9f - [lldb] Fix memory leak in CommandObjectType
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Wed Feb 16 09:05:13 PST 2022
Author: Jonas Devlieghere
Date: 2022-02-16T09:05:08-08:00
New Revision: 0c58e9f4a474c60ed863e6a66c0e1202b4bd6c78
URL: https://github.com/llvm/llvm-project/commit/0c58e9f4a474c60ed863e6a66c0e1202b4bd6c78
DIFF: https://github.com/llvm/llvm-project/commit/0c58e9f4a474c60ed863e6a66c0e1202b4bd6c78.diff
LOG: [lldb] Fix memory leak in CommandObjectType
Avoid leaking the ScriptAddOptions or SynthAddOptions when we return
early because of an empty type name.
Added:
Modified:
lldb/source/Commands/CommandObjectType.cpp
Removed:
################################################################################
diff --git a/lldb/source/Commands/CommandObjectType.cpp b/lldb/source/Commands/CommandObjectType.cpp
index f9e1d0f91fb76..f4ecd80fb0210 100644
--- a/lldb/source/Commands/CommandObjectType.cpp
+++ b/lldb/source/Commands/CommandObjectType.cpp
@@ -1337,9 +1337,9 @@ bool CommandObjectTypeSummaryAdd::Execute_ScriptSummary(
m_options.m_flags, funct_name_str.c_str(), code.c_str());
} else {
// Use an IOHandler to grab Python code from the user
- ScriptAddOptions *options =
- new ScriptAddOptions(m_options.m_flags, m_options.m_regex,
- m_options.m_name, m_options.m_category);
+ auto options = std::make_unique<ScriptAddOptions>(
+ m_options.m_flags, m_options.m_regex, m_options.m_name,
+ m_options.m_category);
for (auto &entry : command.entries()) {
if (entry.ref().empty()) {
@@ -1351,10 +1351,10 @@ bool CommandObjectTypeSummaryAdd::Execute_ScriptSummary(
}
m_interpreter.GetPythonCommandsFromIOHandler(
- " ", // Prompt
- *this, // IOHandlerDelegate
- options); // Baton for the "io_handler" that will be passed back into
- // our IOHandlerDelegate functions
+ " ", // Prompt
+ *this, // IOHandlerDelegate
+ options.release()); // Baton for the "io_handler" that will be passed
+ // back into our IOHandlerDelegate functions
result.SetStatus(eReturnStatusSuccessFinishNoResult);
return result.Succeeded();
@@ -2252,7 +2252,7 @@ class CommandObjectTypeSynthClear : public CommandObjectTypeFormatterClear {
bool CommandObjectTypeSynthAdd::Execute_HandwritePython(
Args &command, CommandReturnObject &result) {
- SynthAddOptions *options = new SynthAddOptions(
+ auto options = std::make_unique<SynthAddOptions>(
m_options.m_skip_pointers, m_options.m_skip_references,
m_options.m_cascade, m_options.m_regex, m_options.m_category);
@@ -2266,10 +2266,10 @@ bool CommandObjectTypeSynthAdd::Execute_HandwritePython(
}
m_interpreter.GetPythonCommandsFromIOHandler(
- " ", // Prompt
- *this, // IOHandlerDelegate
- options); // Baton for the "io_handler" that will be passed back into our
- // IOHandlerDelegate functions
+ " ", // Prompt
+ *this, // IOHandlerDelegate
+ options.release()); // Baton for the "io_handler" that will be passed back
+ // into our IOHandlerDelegate functions
result.SetStatus(eReturnStatusSuccessFinishNoResult);
return result.Succeeded();
}
More information about the lldb-commits
mailing list