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; return B_NO_INIT;
BAutolock lock(&fLock); BAutolock lock(&fLock);
if (lock.IsLocked()) { if (!lock.IsLocked())
try { return B_ERROR;
if (!fQueuedJobs->insert(job).second)
return B_NAME_IN_USE; try {
} catch (const std::bad_alloc& e) { if (!fQueuedJobs->insert(job).second)
return B_NO_MEMORY; return B_NAME_IN_USE;
} catch (...) { } catch (const std::bad_alloc& e) {
return B_ERROR; return B_NO_MEMORY;
} } catch (...) {
BJob::Private(*job).SetTicketNumber(fNextTicketNumber++); return B_ERROR;
job->AddStateListener(this);
if (job->IsRunnable())
release_sem(fHaveRunnableJobSem);
} }
BJob::Private(*job).SetTicketNumber(fNextTicketNumber++);
job->AddStateListener(this);
if (job->IsRunnable())
release_sem(fHaveRunnableJobSem);
return B_OK; return B_OK;
} }