[Lldb-commits] [PATCH] D85396: Fix a small memory leak in VectorType.cpp and BlockPointer.cpp
Jason Molenda via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Aug 5 21:44:39 PDT 2020
jasonmolenda created this revision.
jasonmolenda added reviewers: jingham, davide.
jasonmolenda added a project: LLDB.
Herald added a subscriber: JDevlieghere.
jasonmolenda requested review of this revision.
Looking over the clang static analyzer, came across this old memory leak - looks like it's been around for at least four years. These two methods both call a formatters::*SyntheticFrontEndCreator method which new's an object and returns a pointer to it; they save save that pointer but never call delete. This patch puts it in an auto_ptr so it'll be destroyed when it goes out of scope.
Repository:
rLLDB LLDB
https://reviews.llvm.org/D85396
Files:
lldb/source/DataFormatters/VectorType.cpp
lldb/source/Plugins/Language/CPlusPlus/BlockPointer.cpp
Index: lldb/source/Plugins/Language/CPlusPlus/BlockPointer.cpp
===================================================================
--- lldb/source/Plugins/Language/CPlusPlus/BlockPointer.cpp
+++ lldb/source/Plugins/Language/CPlusPlus/BlockPointer.cpp
@@ -175,9 +175,9 @@
bool lldb_private::formatters::BlockPointerSummaryProvider(
ValueObject &valobj, Stream &s, const TypeSummaryOptions &) {
- lldb_private::SyntheticChildrenFrontEnd *synthetic_children =
- BlockPointerSyntheticFrontEndCreator(nullptr, valobj.GetSP());
- if (!synthetic_children) {
+ std::auto_ptr<SyntheticChildrenFrontEnd> synthetic_children;
+ synthetic_children.reset(BlockPointerSyntheticFrontEndCreator(nullptr, valobj.GetSP()));
+ if (!synthetic_children.get()) {
return false;
}
Index: lldb/source/DataFormatters/VectorType.cpp
===================================================================
--- lldb/source/DataFormatters/VectorType.cpp
+++ lldb/source/DataFormatters/VectorType.cpp
@@ -261,9 +261,9 @@
bool lldb_private::formatters::VectorTypeSummaryProvider(
ValueObject &valobj, Stream &s, const TypeSummaryOptions &) {
- auto synthetic_children =
- VectorTypeSyntheticFrontEndCreator(nullptr, valobj.GetSP());
- if (!synthetic_children)
+ std::auto_ptr<SyntheticChildrenFrontEnd> synthetic_children;
+ synthetic_children.reset(VectorTypeSyntheticFrontEndCreator(nullptr, valobj.GetSP()));
+ if (!synthetic_children.get())
return false;
synthetic_children->Update();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85396.283482.patch
Type: text/x-patch
Size: 1512 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200806/724ecb52/attachment.bin>
More information about the lldb-commits
mailing list