From 797684279172bd56d08d4cefb76b1a9f9a4aabe6 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 24 Jul 2013 14:00:26 +0000 Subject: Delete the buffer in createObjectFile if it fails. The Binary constructor takes ownership of the memory buffer. This is a fairly unfortunate interface, but for now make createObjectFile consistent with it by also deleting the buffer if it fails. Fixes a leak in llvm-ar found by the valgrind bots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187039 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Object/ObjectFile.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/Object/ObjectFile.cpp b/lib/Object/ObjectFile.cpp index 8dfc265..1d1dafd 100644 --- a/lib/Object/ObjectFile.cpp +++ b/lib/Object/ObjectFile.cpp @@ -38,8 +38,10 @@ section_iterator ObjectFile::getRelocatedSection(DataRefImpl Sec) const { } ObjectFile *ObjectFile::createObjectFile(MemoryBuffer *Object) { - if (!Object || Object->getBufferSize() < 64) + if (Object->getBufferSize() < 64) { + delete Object; return 0; + } sys::fs::file_magic Type = sys::fs::identify_magic(Object->getBuffer()); switch (Type) { @@ -47,6 +49,7 @@ ObjectFile *ObjectFile::createObjectFile(MemoryBuffer *Object) { case sys::fs::file_magic::bitcode: case sys::fs::file_magic::archive: case sys::fs::file_magic::macho_universal_binary: + delete Object; return 0; case sys::fs::file_magic::elf_relocatable: case sys::fs::file_magic::elf_executable: -- cgit v1.1