comparison src/org/tmatesoft/hg/internal/DataAccess.java @ 122:e93101b97e4a

Subtle defect: long & int constant gives wrong results for i2 > 32000+
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Fri, 04 Feb 2011 04:05:27 +0100
parents a3a2e5deb320
children d5268ca7715b
comparison
equal deleted inserted replaced
121:b1d6208fb517 122:e93101b97e4a
51 public long readLong() throws IOException { 51 public long readLong() throws IOException {
52 byte[] b = new byte[8]; 52 byte[] b = new byte[8];
53 readBytes(b, 0, 8); 53 readBytes(b, 0, 8);
54 int i1 = b[0] << 24 | (b[1] & 0xFF) << 16 | (b[2] & 0xFF) << 8 | (b[3] & 0xFF); 54 int i1 = b[0] << 24 | (b[1] & 0xFF) << 16 | (b[2] & 0xFF) << 8 | (b[3] & 0xFF);
55 int i2 = b[4] << 24 | (b[5] & 0xFF) << 16 | (b[6] & 0xFF) << 8 | (b[7] & 0xFF); 55 int i2 = b[4] << 24 | (b[5] & 0xFF) << 16 | (b[6] & 0xFF) << 8 | (b[7] & 0xFF);
56 return ((long) i1) << 32 | ((long) i2 & 0xFFFFFFFF); 56 return ((long) i1) << 32 | ((long) i2 & 0xFFFFFFFFl);
57 } 57 }
58 public void readBytes(byte[] buf, int offset, int length) throws IOException { 58 public void readBytes(byte[] buf, int offset, int length) throws IOException {
59 throw new UnsupportedOperationException(); 59 throw new UnsupportedOperationException();
60 } 60 }
61 public byte readByte() throws IOException { 61 public byte readByte() throws IOException {