In 1d99aaab8e364c6ad722437e43c77fd54e13b071 Matthias Sohn pointed out that (low+high)/2 can overflow, so (low+high)>>>1 is a better choice when the result will be used as an array index. Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> --- I guess we need this too then, eh? .../src/org/spearce/jgit/lib/PackIndexV1.java | 2 +- .../src/org/spearce/jgit/lib/PackIndexV2.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV1.java b/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV1.java index fdaa094..0ad29e1 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV1.java +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV1.java @@ -129,7 +129,7 @@ long findOffset(final AnyObjectId objId) { int high = data.length / (4 + Constants.OBJECT_ID_LENGTH); int low = 0; do { - final int mid = (low + high) / 2; + final int mid = (low + high) >>> 1; final int pos = ((4 + Constants.OBJECT_ID_LENGTH) * mid) + 4; final int cmp = objId.compareTo(data, pos); if (cmp < 0) diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV2.java b/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV2.java index eb56ed9..b539547 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV2.java +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/PackIndexV2.java @@ -108,7 +108,7 @@ PackIndexV2(final InputStream fd) throws IOException { final int intNameLen = (int) nameLen; final byte[] raw = new byte[intNameLen]; - final int[] bin = new int[intNameLen >> 2]; + final int[] bin = new int[intNameLen >>> 2]; NB.readFully(fd, raw, 0, raw.length); for (int i = 0; i < bin.length; i++) bin[i] = NB.decodeInt32(raw, i << 2); @@ -212,12 +212,12 @@ boolean hasCRC32Support() { private int binarySearchLevelTwo(final AnyObjectId objId, final int levelOne) { final int[] data = names[levelOne]; - int high = offset32[levelOne].length >> 2; + int high = offset32[levelOne].length >>> 2; if (high == 0) return -1; int low = 0; do { - final int mid = (low + high) >> 1; + final int mid = (low + high) >>> 1; final int mid4 = mid << 2; final int cmp; -- 1.6.3.rc1.205.g37f8 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html