From: Reid Spencer Date: Mon, 13 Dec 2004 16:04:04 +0000 (+0000) Subject: Get rid of some leaks found by VC leak detector. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4af3da6e6b5607e4ec19c9b3f995feeb6fb70ae5;p=oota-llvm.git Get rid of some leaks found by VC leak detector. Patch contributed by Morten Ofsted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18889 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ExecutionEngine/JIT/JITEmitter.cpp b/lib/ExecutionEngine/JIT/JITEmitter.cpp index eff24de89e3..66034330159 100644 --- a/lib/ExecutionEngine/JIT/JITEmitter.cpp +++ b/lib/ExecutionEngine/JIT/JITEmitter.cpp @@ -51,6 +51,7 @@ namespace { unsigned char *CurStubPtr, *CurFunctionPtr; public: JITMemoryManager(); + ~JITMemoryManager(); inline unsigned char *allocateStub(unsigned StubSize); inline unsigned char *startFunctionBody(); @@ -69,6 +70,10 @@ JITMemoryManager::JITMemoryManager() { CurStubPtr = CurFunctionPtr = FunctionBase; } +JITMemoryManager::~JITMemoryManager() { + sys::Memory::ReleaseRWX(MemBlock); +} + unsigned char *JITMemoryManager::allocateStub(unsigned StubSize) { CurStubPtr -= StubSize; if (CurStubPtr < MemBase) { diff --git a/lib/Support/Timer.cpp b/lib/Support/Timer.cpp index ff3fd6fefe0..4b88be2b094 100644 --- a/lib/Support/Timer.cpp +++ b/lib/Support/Timer.cpp @@ -33,12 +33,10 @@ namespace llvm { extern std::ostream *GetLibSupportInfoOutputFile(); } // problem is that a Statistic<> object gets destroyed, which ends up calling // 'GetLibSupportInfoOutputFile()' (below), which calls this function. // LibSupportInfoOutputFilename used to be a global variable, but sometimes it -// would get destroyed before the Statistic, causing havoc to ensue. We "fix" -// this by creating the string the first time it is needed and never destroying -// it. +// would get destroyed before the Statistic, causing havoc to ensue. static std::string &getLibSupportInfoOutputFilename() { - static std::string *LibSupportInfoOutputFilename = new std::string(); - return *LibSupportInfoOutputFilename; + static std::string LibSupportInfoOutputFilename; + return LibSupportInfoOutputFilename; } namespace {