final boolean isZip64ExtensionsRequired() { // Offset MUST be considered in decision about ZIP64 format - see // description of Data Descriptor in ZIP File Format Specification! if (FORCE_ZIP64_EXT) return true /*UNKNOWN != getCompressedSize() || UNKNOWN != getSize() || UNKNOWN != getOffset()*/; else return UInt.MAX_VALUE <= getCompressedSize() || UInt.MAX_VALUE <= getSize() || UInt.MAX_VALUE <= getOffset(); }
final long offset = getOffset(); if (FORCE_ZIP64_EXT && UNKNOWN != offset || UInt.MAX_VALUE <= offset) { writeLong(offset, data, off);
@Test public void testRawOffset() { try { entry.setRawOffset(UNKNOWN - 1); fail(); } catch (IllegalArgumentException expected) { } try { entry.setRawOffset(ULong.MIN_VALUE - 1); fail(); } catch (IllegalArgumentException expected) { } try { entry.setRawOffset(ULong.MAX_VALUE + 1); fail(); } catch (IllegalArgumentException expected) { } assertEquals(UNKNOWN, entry.getOffset()); assertEquals(0, entry.getRawOffset()); entry.setRawOffset(UInt.MIN_VALUE); assertEquals(UInt.MIN_VALUE, entry.getOffset()); assertEquals(UInt.MIN_VALUE, entry.getRawOffset()); entry.setRawOffset(UInt.MAX_VALUE); assertEquals(UInt.MAX_VALUE, entry.getOffset()); assertEquals(UInt.MAX_VALUE, entry.getRawOffset()); entry.setRawOffset(UInt.MAX_VALUE + 1); // ZIP64! assertEquals(UInt.MAX_VALUE + 1, entry.getOffset()); assertEquals(UInt.MAX_VALUE, entry.getRawOffset()); }
lfhOff = this.mapper.map(entry.getOffset()); if (lfhOff < this.preamble) this.preamble = lfhOff;
if (entry == null) return null; long fp = entry.getOffset(); assert UNKNOWN != fp; fp = mapper.map(fp);
assertEquals(0x0fedcba987654322L, entry.getCompressedSize()); assertEquals(UInt.MAX_VALUE, entry.getRawCompressedSize()); assertEquals(0x0fedcba987654323L, entry.getOffset()); assertEquals(UInt.MAX_VALUE, entry.getRawOffset());