From fe81ff1341468528cebdcea2ee1cd79b5161ffa9 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Fri, 13 Jul 2018 22:55:40 +0300 Subject: [PATCH] [TAR] truncatingIfNeeded optimizations for TarEntryInfo.init --- Sources/TAR/TarEntryInfo.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/TAR/TarEntryInfo.swift b/Sources/TAR/TarEntryInfo.swift index 347eef59..d5509b6b 100644 --- a/Sources/TAR/TarEntryInfo.swift +++ b/Sources/TAR/TarEntryInfo.swift @@ -151,12 +151,12 @@ public struct TarEntryInfo: ContainerEntryInfo { // Some implementations treat bytes as signed integers, but some don't. // So we check both cases, coincedence in one of them will pass the checksum test. - let unsignedOurChecksumArray = headerDataForChecksum.map { UInt($0) } - let signedOurChecksumArray = headerDataForChecksum.map { Int($0) } + let unsignedOurChecksumArray = headerDataForChecksum.map { UInt(truncatingIfNeeded: $0) } + let signedOurChecksumArray = headerDataForChecksum.map { $0.toInt() } let unsignedOurChecksum = unsignedOurChecksumArray.reduce(0) { $0 + $1 } let signedOurChecksum = signedOurChecksumArray.reduce(0) { $0 + $1 } - guard unsignedOurChecksum == UInt(checksum) || signedOurChecksum == checksum + guard unsignedOurChecksum == UInt(truncatingIfNeeded: checksum) || signedOurChecksum == checksum else { throw TarError.wrongHeaderChecksum } // File type