Small changes to bzip2 code

This commit is contained in:
Timofey Solomko
2017-09-02 22:59:31 +03:00
parent cc77cfaad6
commit 78fb8cb07b
2 changed files with 8 additions and 7 deletions
+7 -7
View File
@@ -72,14 +72,14 @@ public class BZip2: DecompressionAlgorithm {
private static func decode(_ bitReader: BitReader) throws -> [UInt8] {
let isRandomized = bitReader.bit()
guard isRandomized != 1 else { throw BZip2Error.randomizedBlock }
guard isRandomized == 0 else { throw BZip2Error.randomizedBlock }
var pointer = bitReader.intFromBits(count: 24)
func computeUsed() -> [Bool] {
let huffmanUsedMap = bitReader.intFromBits(count: 16)
var mapMask = 1 << 15
var used: [Bool] = []
var used = [Bool]()
while mapMask > 0 {
if huffmanUsedMap & mapMask > 0 {
let huffmanUsedBitmap = bitReader.intFromBits(count: 16)
@@ -106,8 +106,8 @@ public class BZip2: DecompressionAlgorithm {
func computeSelectorsList() throws -> [Int] {
let selectorsUsed = bitReader.intFromBits(count: 15)
var mtf: [Int] = Array(0..<huffmanGroups)
var selectorsList: [Int] = []
var mtf = Array(0..<huffmanGroups)
var selectorsList = [Int]()
for _ in 0..<selectorsUsed {
var c = 0
@@ -132,7 +132,7 @@ public class BZip2: DecompressionAlgorithm {
var tables: [DecodingHuffmanTree] = []
for _ in 0..<huffmanGroups {
var length = bitReader.intFromBits(count: 5)
var lengths: [Int] = []
var lengths = [Int]()
for _ in 0..<symbolsInUse {
guard length >= 0 && length <= 20 else { throw BZip2Error.wrongHuffmanLengthCode }
while bitReader.bit() > 0 {
@@ -140,8 +140,8 @@ public class BZip2: DecompressionAlgorithm {
}
lengths.append(length)
}
let codes = DecodingHuffmanTree(lengthsToOrder: lengths, bitReader)
tables.append(codes)
let table = DecodingHuffmanTree(lengthsToOrder: lengths, bitReader)
tables.append(table)
}
return tables
+1
View File
@@ -12,6 +12,7 @@ import Foundation
public enum BZip2Error: Error {
/// 'Magic' number is not 0x425a.
case wrongMagic
// TODO: Rename to `wrongVersion` in 4.0.
/// Compression method is not type 'h' (not Huffman).
case wrongCompressionMethod
/// Unsupported block size (not from '0' to '9').