From: Niki Roo Date: Fri, 26 Apr 2019 16:16:21 +0000 (+0200) Subject: NextableInputStream: better perfs X-Git-Tag: fanfix-swing-0.0.1~21^2~121 X-Git-Url: https://git.nikiroo.be/?a=commitdiff_plain;h=59509e75f7a88cefad9c5478324bbeb64a871d31;p=fanfix-swing.git NextableInputStream: better perfs --- diff --git a/src/be/nikiroo/utils/NextableInputStream.java b/src/be/nikiroo/utils/NextableInputStream.java index b5374a13..d9f27cef 100644 --- a/src/be/nikiroo/utils/NextableInputStream.java +++ b/src/be/nikiroo/utils/NextableInputStream.java @@ -224,6 +224,9 @@ public class NextableInputStream extends InputStream { /** * Check if this stream is totally spent (no more data to read or to * process). + *

+ * Note: an empty stream that is still not started will return FALSE, as we + * don't know yet if it is empty. * * @return TRUE if it is */ @@ -264,10 +267,11 @@ public class NextableInputStream extends InputStream { while (hasMoreData() && done < blen) { preRead(); if (hasMoreData()) { - for (int i = pos; i < blen && i < len; i++) { - b[boff + done] = buffer[i]; - pos++; - done++; + int now = Math.min(blen, len) - pos; + if (now > 0) { + System.arraycopy(buffer, pos, b, boff, now); + pos += now; + done += now; } } } @@ -494,8 +498,7 @@ public class NextableInputStream extends InputStream { } // buffer must be > search - static private boolean startsWith(byte[] search, byte[] buffer, - int offset) { + static private boolean startsWith(byte[] search, byte[] buffer, int offset) { boolean same = true; for (int i = 0; i < search.length; i++) { if (search[i] != buffer[offset + i]) {