From 53bd3d0b1a0ae5550578c7b341a7f55e620d8773 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Mon, 13 Dec 2004 16:04:04 +0000 Subject: [PATCH] Get rid of some leaks found by VC leak detector. Patch contributed by Morten Ofsted. llvm-svn: 18889 --- llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp | 5 +++++ llvm/lib/Support/Timer.cpp | 8 +++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp b/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp index eff24de89e39..660343301597 100644 --- a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp +++ b/llvm/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/llvm/lib/Support/Timer.cpp b/llvm/lib/Support/Timer.cpp index ff3fd6fefe02..4b88be2b0947 100644 --- a/llvm/lib/Support/Timer.cpp +++ b/llvm/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 {