[LLDB] Fix for synthetic children memory leak
authorCameron Desrochers <cameron@moodycamel.com>
Wed, 9 Oct 2019 18:27:33 +0000 (18:27 +0000)
committerCameron Desrochers <cameron@moodycamel.com>
Wed, 9 Oct 2019 18:27:33 +0000 (18:27 +0000)
commit89386daa9571add3bc30311dc0902f82a1148a4c
tree73b908fdaee2d992ac09ba5269509307dfb1b08c
parent72c7c21dda99bf2a388255ea167914771704a6f9
[LLDB] Fix for synthetic children memory leak

The lifetime of a ValueObject and all its derivative ValueObjects (children, clones, etc.) is managed by a ClusterManager. These objects are only destroyed when every shared pointer to any of the managed objects in the cluster is destroyed. This means that no object in the cluster can store a shared pointer to another object in the cluster without creating a memory leak of the entire cluster. However, some of the synthetic children front-end implementations do exactly this; this patch fixes that.

Differential Revision: https://reviews.llvm.org/D68641

llvm-svn: 374195
lldb/source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp
lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp
lldb/source/Plugins/Language/CPlusPlus/LibCxxQueue.cpp
lldb/source/Plugins/Language/CPlusPlus/LibCxxTuple.cpp
lldb/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp
lldb/source/Plugins/Language/CPlusPlus/LibStdcppTuple.cpp
lldb/source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp