Fix race condition in StreamCopyThread

If we get an interrupt during an IO operation (src.read or dst.write)
caused by the flush() method incrementing the flush counter, ensure
we restart the proper section of code.  Just ignore the interrupt
and continue running.

Bug: 313082
Change-Id: Ib2b37901af8141289bbac9807cacf42b4e2461bd
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Dmitry Neverov 2010-05-19 11:39:17 -07:00 committed by Shawn O. Pearce
parent ae972e774e
commit b3247ba524
1 changed files with 2 additions and 8 deletions

View File

@ -100,10 +100,7 @@ public void run() {
try {
n = src.read(buf);
} catch (InterruptedIOException wakey) {
if (flushCounter.get() > 0)
continue;
else
throw wakey;
continue;
}
if (n < 0)
break;
@ -112,10 +109,7 @@ public void run() {
try {
dst.write(buf, 0, n);
} catch (InterruptedIOException wakey) {
if (flushCounter.get() > 0)
continue;
else
throw wakey;
continue;
}
break;
}