mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
Make sure the Archive gets deleted if there's an error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18869 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -282,9 +282,9 @@ Archive::loadArchive() {
|
|||||||
Archive*
|
Archive*
|
||||||
Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) {
|
Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) {
|
||||||
try {
|
try {
|
||||||
Archive* result = new Archive(file, true);
|
std::auto_ptr<Archive> result ( new Archive(file, true));
|
||||||
result->loadArchive();
|
result->loadArchive();
|
||||||
return result;
|
return result.release();
|
||||||
} catch (const std::string& msg) {
|
} catch (const std::string& msg) {
|
||||||
if (ErrorMessage) {
|
if (ErrorMessage) {
|
||||||
*ErrorMessage = msg;
|
*ErrorMessage = msg;
|
||||||
@ -377,9 +377,9 @@ Archive::loadSymbolTable() {
|
|||||||
Archive*
|
Archive*
|
||||||
Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) {
|
Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) {
|
||||||
try {
|
try {
|
||||||
Archive* result = new Archive(file, true);
|
std::auto_ptr<Archive> result ( new Archive(file, true) );
|
||||||
result->loadSymbolTable();
|
result->loadSymbolTable();
|
||||||
return result;
|
return result.release();
|
||||||
} catch (const std::string& msg) {
|
} catch (const std::string& msg) {
|
||||||
if (ErrorMessage) {
|
if (ErrorMessage) {
|
||||||
*ErrorMessage = msg;
|
*ErrorMessage = msg;
|
||||||
|
@ -282,9 +282,9 @@ Archive::loadArchive() {
|
|||||||
Archive*
|
Archive*
|
||||||
Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) {
|
Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) {
|
||||||
try {
|
try {
|
||||||
Archive* result = new Archive(file, true);
|
std::auto_ptr<Archive> result ( new Archive(file, true));
|
||||||
result->loadArchive();
|
result->loadArchive();
|
||||||
return result;
|
return result.release();
|
||||||
} catch (const std::string& msg) {
|
} catch (const std::string& msg) {
|
||||||
if (ErrorMessage) {
|
if (ErrorMessage) {
|
||||||
*ErrorMessage = msg;
|
*ErrorMessage = msg;
|
||||||
@ -377,9 +377,9 @@ Archive::loadSymbolTable() {
|
|||||||
Archive*
|
Archive*
|
||||||
Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) {
|
Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) {
|
||||||
try {
|
try {
|
||||||
Archive* result = new Archive(file, true);
|
std::auto_ptr<Archive> result ( new Archive(file, true) );
|
||||||
result->loadSymbolTable();
|
result->loadSymbolTable();
|
||||||
return result;
|
return result.release();
|
||||||
} catch (const std::string& msg) {
|
} catch (const std::string& msg) {
|
||||||
if (ErrorMessage) {
|
if (ErrorMessage) {
|
||||||
*ErrorMessage = msg;
|
*ErrorMessage = msg;
|
||||||
|
Reference in New Issue
Block a user