clean up properly if pthread_kill fails in MySystem::visit

This commit is contained in:
Joel Dice 2010-11-22 16:57:02 -07:00
parent b8063285f3
commit 44fcc5c04e

View File

@ -650,17 +650,22 @@ class MySystem: public System {
int rv = pthread_kill(target->thread, VisitSignal);
int result;
if (rv == 0) {
while (visitTarget) visitLock->wait(t, 0);
threadVisitor = 0;
system->visitLock->notifyAll(t);
return 0;
result = 0;
} else {
return -1;
visitTarget = 0;
result = -1;
}
threadVisitor = 0;
system->visitLock->notifyAll(t);
return result;
}
virtual uint64_t call(void* function, uintptr_t* arguments, uint8_t* types,