mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-10 08:40:41 +00:00
Fix some exception safety problems
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10859 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f907bac068
commit
de31b76784
@ -117,7 +117,12 @@ void Debugger::createProgram() {
|
||||
/// there is no program currently running, this just silently succeeds.
|
||||
void Debugger::killProgram() {
|
||||
// The destructor takes care of the dirty work.
|
||||
delete Process;
|
||||
try {
|
||||
delete Process;
|
||||
} catch (...) {
|
||||
Process = 0;
|
||||
throw;
|
||||
}
|
||||
Process = 0;
|
||||
}
|
||||
|
||||
@ -128,10 +133,12 @@ void Debugger::stepProgram() {
|
||||
try {
|
||||
Process->stepProgram();
|
||||
} catch (InferiorProcessDead &IPD) {
|
||||
delete Process;
|
||||
Process = 0;
|
||||
killProgram();
|
||||
throw NonErrorException("The program stopped with exit code " +
|
||||
itostr(IPD.getExitCode()));
|
||||
} catch (...) {
|
||||
killProgram();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
@ -176,10 +183,12 @@ void Debugger::nextProgram() {
|
||||
}
|
||||
|
||||
} catch (InferiorProcessDead &IPD) {
|
||||
delete Process;
|
||||
Process = 0;
|
||||
killProgram();
|
||||
throw NonErrorException("The program stopped with exit code " +
|
||||
itostr(IPD.getExitCode()));
|
||||
} catch (...) {
|
||||
killProgram();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
@ -190,10 +199,12 @@ void Debugger::finishProgram(void *Frame) {
|
||||
try {
|
||||
Process->finishProgram(Frame);
|
||||
} catch (InferiorProcessDead &IPD) {
|
||||
delete Process;
|
||||
Process = 0;
|
||||
killProgram();
|
||||
throw NonErrorException("The program stopped with exit code " +
|
||||
itostr(IPD.getExitCode()));
|
||||
} catch (...) {
|
||||
killProgram();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
@ -204,9 +215,11 @@ void Debugger::contProgram() {
|
||||
try {
|
||||
Process->contProgram();
|
||||
} catch (InferiorProcessDead &IPD) {
|
||||
delete Process;
|
||||
Process = 0;
|
||||
killProgram();
|
||||
throw NonErrorException("The program stopped with exit code " +
|
||||
itostr(IPD.getExitCode()));
|
||||
} catch (...) {
|
||||
killProgram();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user