mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
Destroy allocated resources on exception.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8969 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -59,8 +59,13 @@ BytecodeFileReader::BytecodeFileReader(const std::string &Filename) {
|
|||||||
if (Buffer == (unsigned char*)MAP_FAILED)
|
if (Buffer == (unsigned char*)MAP_FAILED)
|
||||||
throw std::string("Error mmapping file!");
|
throw std::string("Error mmapping file!");
|
||||||
|
|
||||||
|
try {
|
||||||
// Parse the bytecode we mmapped in
|
// Parse the bytecode we mmapped in
|
||||||
ParseBytecode(Buffer, Length, Filename);
|
ParseBytecode(Buffer, Length, Filename);
|
||||||
|
} catch (...) {
|
||||||
|
munmap((char*)Buffer, Length);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BytecodeFileReader::~BytecodeFileReader() {
|
BytecodeFileReader::~BytecodeFileReader() {
|
||||||
@ -106,7 +111,12 @@ BytecodeBufferReader::BytecodeBufferReader(const unsigned char *Buf,
|
|||||||
ParseBegin = Buffer = Buf;
|
ParseBegin = Buffer = Buf;
|
||||||
MustDelete = false;
|
MustDelete = false;
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
ParseBytecode(ParseBegin, Length, ModuleID);
|
ParseBytecode(ParseBegin, Length, ModuleID);
|
||||||
|
} catch (...) {
|
||||||
|
if (MustDelete) delete [] Buffer;
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BytecodeBufferReader::~BytecodeBufferReader() {
|
BytecodeBufferReader::~BytecodeBufferReader() {
|
||||||
|
Reference in New Issue
Block a user