diff options
author | Klaus Aehlig <aehlig@google.com> | 2016-06-08 09:17:34 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2016-06-08 11:56:29 +0000 |
commit | 4c827b50b24acf3c970ad96b9285a6cb29889bfc (patch) | |
tree | 845fd9e5e66d740a44b06a6aa854d4adee7e2b4c | |
parent | e3108c51acd41f98a78eeed85a558bd50253cc32 (diff) |
ExperimentalEventHandler: fix off-by-one error
Java's Arrays.copyOfRange expects as "to" argument the index of the
first character not to be copied. As indices start with 0, the first
index outside the array is, in fact, the length itself (and not one
more than the length).
This off-by-one error so far never caused any problems, as Arrays.copyOfRange
is guaranteed to accept arbitrary large "to" values and helpfully
pads with 0-bytes. As 0-bytes are not shown on most terminals, the
output still looked correct. However, that off-by-one error did mess
up the output for users of the --experimental_show_artifacts flag.
--
Change-Id: I135ff720740db5c224a47668fc7513cbb7110f9f
Reviewed-on: https://bazel-review.googlesource.com/#/c/3771
MOS_MIGRATED_REVID=124332337
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java index cf4795f683..4652907ace 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java @@ -128,7 +128,7 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { terminal.flush(); stream.write(event.getKind() == EventKind.STDOUT ? stdoutBuffer : stderrBuffer); stream.write(Arrays.copyOf(message, eolIndex + 1)); - byte[] restMessage = Arrays.copyOfRange(message, eolIndex + 1, message.length + 1); + byte[] restMessage = Arrays.copyOfRange(message, eolIndex + 1, message.length); if (event.getKind() == EventKind.STDOUT) { stdoutBuffer = restMessage; } else { |