JobQueue::AddJob() returns error on lock failure.

* If the lock could not be obtained, it will now return B_ERROR
  instead of B_OK.
This commit is contained in:
Axel Dörfler
2015-07-22 20:41:41 +02:00
parent ac0a462fba
commit c7c1744b2e
+14 -13
View File
@@ -84,20 +84,21 @@ JobQueue::AddJob(BJob* job)
return B_NO_INIT;
BAutolock lock(&fLock);
if (lock.IsLocked()) {
try {
if (!fQueuedJobs->insert(job).second)
return B_NAME_IN_USE;
} catch (const std::bad_alloc& e) {
return B_NO_MEMORY;
} catch (...) {
return B_ERROR;
}
BJob::Private(*job).SetTicketNumber(fNextTicketNumber++);
job->AddStateListener(this);
if (job->IsRunnable())
release_sem(fHaveRunnableJobSem);
if (!lock.IsLocked())
return B_ERROR;
try {
if (!fQueuedJobs->insert(job).second)
return B_NAME_IN_USE;
} catch (const std::bad_alloc& e) {
return B_NO_MEMORY;
} catch (...) {
return B_ERROR;
}
BJob::Private(*job).SetTicketNumber(fNextTicketNumber++);
job->AddStateListener(this);
if (job->IsRunnable())
release_sem(fHaveRunnableJobSem);
return B_OK;
}