# HG changeset patch # User Artem Tikhomirov # Date 1320812546 -3600 # Node ID 15e1961719f2cf3c047f13b44a0fd409e337589f # Parent 467fd379b653fd635d1897d13f0255450818df1b Investigate sporadic BufferUnderflowException diff -r 467fd379b653 -r 15e1961719f2 src/org/tmatesoft/hg/repo/HgWorkingCopyStatusCollector.java --- a/src/org/tmatesoft/hg/repo/HgWorkingCopyStatusCollector.java Wed Nov 09 04:56:36 2011 +0100 +++ b/src/org/tmatesoft/hg/repo/HgWorkingCopyStatusCollector.java Wed Nov 09 05:22:26 2011 +0100 @@ -415,8 +415,15 @@ if (buffer.position() > 5) { buffer.position(buffer.position() - 5); } - buffer.get(xx, 0, min(xx.length, i)); - repo.getContext().getLog().debug(getClass(), "expected >>%s<< but got >>%s<<", new String(data, max(0, x - 4), min(data.length - x, 20)), new String(xx)); + buffer.get(xx, 0, min(xx.length, i-1 /*-1 for the one potentially read at buffer.get in if() */)); + String exp; + if (x < data.length) { + exp = new String(data, max(0, x - 4), min(data.length - x, 20)); + } else { + int offset = max(0, x - 4); + exp = new String(data, offset, min(data.length - offset, 20)); + } + repo.getContext().getLog().debug(getClass(), "expected >>%s<< but got >>%s<<", exp, new String(xx)); } sameSoFar = false; break;