From bae826be2890c8ecb2627ac28fb81f5121b93a69 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Fri, 4 Mar 2016 17:53:55 +0100 Subject: [PATCH] Coverity 72980 --- .../mount/command/FutureCommandResult.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/command/FutureCommandResult.java b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/command/FutureCommandResult.java index 158b0f19a..ce2c79f99 100644 --- a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/command/FutureCommandResult.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/mount/command/FutureCommandResult.java @@ -20,15 +20,15 @@ import java.util.concurrent.locks.ReentrantLock; import org.cryptomator.frontend.CommandFailedException; final class FutureCommandResult implements Future, Runnable { - + private final Process process; private final AtomicBoolean canceled = new AtomicBoolean(); private final AtomicBoolean done = new AtomicBoolean(); private final Lock lock = new ReentrantLock(); private final Condition doneCondition = lock.newCondition(); - + private CommandFailedException exception; - + FutureCommandResult(Process process) { this.process = process; } @@ -49,7 +49,7 @@ final class FutureCommandResult implements Future, Runnable { public boolean isCancelled() { return canceled.get(); } - + private void setDone() { lock.lock(); try { @@ -69,7 +69,7 @@ final class FutureCommandResult implements Future, Runnable { public CommandResult get() throws InterruptedException, ExecutionException { lock.lock(); try { - while(!done.get()) { + while (!done.get()) { doneCondition.await(); } } finally { @@ -85,8 +85,12 @@ final class FutureCommandResult implements Future, Runnable { public CommandResult get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { lock.lock(); try { - while(!done.get()) { - doneCondition.await(timeout, unit); + boolean doneInTime = true; + if (!done.get()) { + doneInTime = doneCondition.await(timeout, unit); + } + if (!doneInTime) { + throw new TimeoutException(); } } finally { lock.unlock();