From 6cd3d84e746284d1e57248bbcc9d154985a94b32 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Tue, 3 Aug 2021 17:58:38 +0300 Subject: [PATCH] Optimize parseCentralDirectory Avoid creating redundant IntRange --- .../kotlin/cli/jvm/compiler/jarfs/ZipImplementation.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/ZipImplementation.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/ZipImplementation.kt index 8c91a8adc4d..decfb652d5d 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/ZipImplementation.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/ZipImplementation.kt @@ -62,9 +62,11 @@ fun MappedByteBuffer.contentsToByteArray( fun MappedByteBuffer.parseCentralDirectory(): List { order(ByteOrder.LITTLE_ENDIAN) - val endOfCentralDirectoryOffset = (capacity() - END_OF_CENTRAL_DIR_SIZE downTo 0).first { offset -> + var endOfCentralDirectoryOffset = capacity() - END_OF_CENTRAL_DIR_SIZE + while (endOfCentralDirectoryOffset >= 0) { // header of "End of central directory" - getInt(offset) == 0x06054b50 + if (getInt(endOfCentralDirectoryOffset) == 0x06054b50) break + endOfCentralDirectoryOffset-- } val entriesNumber = getUnsignedShort(endOfCentralDirectoryOffset + 10)