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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user