From 19b09c08fcca53285dcbbc54b2b8859aaa18fe02 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 27 May 2017 20:40:35 +0300 Subject: [PATCH] Replaced fatalErrors in HuffmanTree with SymbolNotFound errors. --- Sources/Deflate.swift | 8 ++++---- Sources/HuffmanTree.swift | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/Deflate.swift b/Sources/Deflate.swift index 5a0cdc7c..ef08e040 100644 --- a/Sources/Deflate.swift +++ b/Sources/Deflate.swift @@ -381,18 +381,18 @@ public class Deflate: DecompressionAlgorithm { for code in bldCodes { switch code { case .byte(let byte): - mainLiterals.code(symbol: byte.toInt(), &bitWriter) + try mainLiterals.code(symbol: byte.toInt(), &bitWriter, DeflateError.symbolNotFound) case .lengthDistance(let ld): - mainLiterals.code(symbol: ld.lengthSymbol, &bitWriter) + try mainLiterals.code(symbol: ld.lengthSymbol, &bitWriter, DeflateError.symbolNotFound) bitWriter.write(number: ld.lengthExtraBits, bitsCount: ld.lengthExtraBitsCount) - mainDistances.code(symbol: ld.distanceSymbol, &bitWriter) + try mainDistances.code(symbol: ld.distanceSymbol, &bitWriter, DeflateError.symbolNotFound) bitWriter.write(number: ld.distanceExtraBits, bitsCount: ld.distanceExtraBitsCount) } } // End data symbol. - mainLiterals.code(symbol: 256, &bitWriter) + try mainLiterals.code(symbol: 256, &bitWriter, DeflateError.symbolNotFound) bitWriter.finish() return bitWriter.buffer diff --git a/Sources/HuffmanTree.swift b/Sources/HuffmanTree.swift index 6d5b6b2e..01ad47ca 100644 --- a/Sources/HuffmanTree.swift +++ b/Sources/HuffmanTree.swift @@ -156,7 +156,7 @@ class HuffmanTree { } } - func code(symbol: Int, _ bitWriter: inout BitToByteWriter) { + func code(symbol: Int, _ bitWriter: inout BitToByteWriter, _ symbolNotFoundError: Error) throws { precondition(self.coding, "HuffmanTree is not initalized for coding!") var index = 0 @@ -166,7 +166,7 @@ class HuffmanTree { if foundSymbol == symbol { return } else { - fatalError("Symbol not found, this error should be replaced with Error.") + throw symbolNotFoundError } case .branch: let leftChildIndex = 2 * index + 1 @@ -200,7 +200,7 @@ class HuffmanTree { bitWriter.write(bit: 1) continue } else { - fatalError("Symbol not found, this error should be replaced with Error.") + throw symbolNotFoundError } case .branch(let rightArray): if rightArray.contains(symbol) { @@ -208,7 +208,7 @@ class HuffmanTree { bitWriter.write(bit: 1) continue } else { - fatalError("Symbol not found, this error should be replaced with Error.") + throw symbolNotFoundError } } }