From 59509e75f7a88cefad9c5478324bbeb64a871d31 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Fri, 26 Apr 2019 18:16:21 +0200 Subject: [PATCH] NextableInputStream: better perfs --- src/be/nikiroo/utils/NextableInputStream.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/be/nikiroo/utils/NextableInputStream.java b/src/be/nikiroo/utils/NextableInputStream.java index b5374a1..d9f27ce 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]) { -- 2.27.0