Skip to content

Commit da3cbac

Browse files
committed
Change Reader.readNode to return long instead of int
1 parent d6d7acd commit da3cbac

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

src/main/java/com/maxmind/db/Decoder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,13 @@ private int decodeInt32(int size) {
202202
}
203203

204204
private long decodeLong(int size) {
205-
long integer = 0;
205+
return Decoder.decodeLong(this.buffer, 0, size);
206+
}
207+
208+
static long decodeLong(Buffer buffer, int base, int size) {
209+
long integer = base;
206210
for (int i = 0; i < size; i++) {
207-
integer = (integer << 8) | (this.buffer.get() & 0xFF);
211+
integer = (integer << 8) | (buffer.get() & 0xFF);
208212
}
209213
return integer;
210214
}

src/main/java/com/maxmind/db/Networks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public boolean hasNext() {
154154
ipRight[node.prefix >> 3] |= 1 << (7 - (node.prefix % 8));
155155

156156
try {
157-
int rightPointer = this.reader.readNode(this.buffer, node.pointer, 1);
157+
long rightPointer = this.reader.readNode(this.buffer, node.pointer, 1);
158158
node.prefix++;
159159

160160
this.nodes.push(new NetworkNode(ipRight, node.prefix, rightPointer));

src/main/java/com/maxmind/db/Reader.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ record = this.readNode(buffer, record, bit);
355355
return new long[]{record, i};
356356
}
357357

358-
int readNode(Buffer buffer, long nodeNumber, int index)
358+
long readNode(Buffer buffer, long nodeNumber, int index)
359359
throws InvalidDatabaseException {
360360
// index is the index of the record within the node, which
361361
// can either be 0 or 1.
@@ -365,7 +365,7 @@ int readNode(Buffer buffer, long nodeNumber, int index)
365365
case 24:
366366
// For a 24 bit record, each record is 3 bytes.
367367
buffer.position(baseOffset + (long) index * 3);
368-
return Decoder.decodeInteger(buffer, 0, 3);
368+
return Decoder.decodeLong(buffer, 0, 3);
369369
case 28:
370370
int middle = buffer.get(baseOffset + 3);
371371

@@ -378,10 +378,10 @@ int readNode(Buffer buffer, long nodeNumber, int index)
378378
middle = 0x0F & middle;
379379
}
380380
buffer.position(baseOffset + (long) index * 4);
381-
return Decoder.decodeInteger(buffer, middle, 3);
381+
return Decoder.decodeLong(buffer, middle, 3);
382382
case 32:
383383
buffer.position(baseOffset + (long) index * 4);
384-
return Decoder.decodeInteger(buffer, 0, 4);
384+
return Decoder.decodeLong(buffer, 0, 4);
385385
default:
386386
throw new InvalidDatabaseException("Unknown record size: "
387387
+ this.metadata.getRecordSize());

0 commit comments

Comments
 (0)