Replaced fatalErrors in HuffmanTree with SymbolNotFound errors.

This commit is contained in:
Timofey Solomko
2017-05-27 20:40:35 +03:00
parent 8b3cc5620a
commit 19b09c08fc
2 changed files with 8 additions and 8 deletions
+4 -4
View File
@@ -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
+4 -4
View File
@@ -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
}
}
}