From c7c1744b2e582bff9075b880ae9bcf35411cd077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 15 Jun 2015 18:47:21 +0200 Subject: [PATCH] JobQueue::AddJob() returns error on lock failure. * If the lock could not be obtained, it will now return B_ERROR instead of B_OK. --- src/kits/support/JobQueue.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/kits/support/JobQueue.cpp b/src/kits/support/JobQueue.cpp index 0246c75a5a..974903941d 100644 --- a/src/kits/support/JobQueue.cpp +++ b/src/kits/support/JobQueue.cpp @@ -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; }