Fix memory leaks when resolving symbols.

This was seen in an experimental branch of cmssw.
This commit is contained in:
Vassil Vassilev 2020-12-13 20:07:28 +00:00 committed by jenkins
parent 904796d2bb
commit ad5bcb1ce5
2 changed files with 8 additions and 4 deletions

View File

@ -97,6 +97,9 @@ namespace cling {
public:
DynamicLibraryManager(const InvocationOptions& Opts);
~DynamicLibraryManager();
DynamicLibraryManager(const DynamicLibraryManager&) = delete;
DynamicLibraryManager& operator=(const DynamicLibraryManager&) = delete;
InterpreterCallbacks* getCallbacks() { return m_Callbacks; }
const InterpreterCallbacks* getCallbacks() const { return m_Callbacks; }
void setCallbacks(InterpreterCallbacks* C) { m_Callbacks = C; }

View File

@ -298,10 +298,6 @@ std::string GetExecutablePath() {
}
namespace cling {
DynamicLibraryManager::~DynamicLibraryManager() {
delete m_Dyld;
}
class Dyld {
struct BasePathHashFunction {
size_t operator()(const BasePath& item) const {
@ -869,6 +865,11 @@ namespace cling {
return ""; // Search found no match.
}
DynamicLibraryManager::~DynamicLibraryManager() {
static_assert(sizeof(Dyld) > 0, "Incomplete type");
delete m_Dyld;
}
void DynamicLibraryManager::initializeDyld(
std::function<bool(llvm::StringRef)> shouldPermanentlyIgnore) {
assert(!m_Dyld && "Already initialized!");