Destroy allocated resources on exception.
authorMisha Brukman <brukman+llvm@gmail.com>
Wed, 8 Oct 2003 19:55:47 +0000 (19:55 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Wed, 8 Oct 2003 19:55:47 +0000 (19:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8969 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bytecode/Reader/ReaderWrappers.cpp

index 99c0e6be9ee37fa0f6a8afe5b59ac585ecbceed0..9b6327437d80e3f1b026044335d4bcaf3c91dbc4 100644 (file)
@@ -59,8 +59,13 @@ BytecodeFileReader::BytecodeFileReader(const std::string &Filename) {
   if (Buffer == (unsigned char*)MAP_FAILED)
     throw std::string("Error mmapping file!");
 
-  // Parse the bytecode we mmapped in
-  ParseBytecode(Buffer, Length, Filename);
+  try {
+    // Parse the bytecode we mmapped in
+    ParseBytecode(Buffer, Length, Filename);
+  } catch (...) {
+    munmap((char*)Buffer, Length);
+    throw;
+  }
 }
 
 BytecodeFileReader::~BytecodeFileReader() {
@@ -106,7 +111,12 @@ BytecodeBufferReader::BytecodeBufferReader(const unsigned char *Buf,
     ParseBegin = Buffer = Buf;
     MustDelete = false;
   }
-  ParseBytecode(ParseBegin, Length, ModuleID);
+  try {
+    ParseBytecode(ParseBegin, Length, ModuleID);
+  } catch (...) {
+    if (MustDelete) delete [] Buffer;
+    throw;
+  }
 }
 
 BytecodeBufferReader::~BytecodeBufferReader() {