mirror of
https://github.com/tsolomko/SWCompression.git
synced 2026-06-23 14:56:41 +00:00
[LZMA2] Use LZMA2.decompress with dict size byte argument function instead of using LZMA2Decoder directly in "clients"
This commit is contained in:
@@ -164,10 +164,7 @@ class SevenZipFolder {
|
||||
properties.count == 1
|
||||
else { throw LZMA2Error.wrongDictionarySize }
|
||||
|
||||
let byteReader = ByteReader(data: decodedData)
|
||||
let decoder = try LZMA2Decoder(byteReader, properties[0])
|
||||
try decoder.decode()
|
||||
decodedData = Data(bytes: decoder.out)
|
||||
decodedData = try Data(bytes: LZMA2.decompress(ByteReader(data: decodedData), properties[0]))
|
||||
case .lzma:
|
||||
// Both properties' byte (lp, lc, pb) and dictionary size are stored in coder's properties.
|
||||
guard let properties = coder.properties,
|
||||
|
||||
@@ -24,11 +24,11 @@ public class LZMA2: DecompressionAlgorithm {
|
||||
*/
|
||||
public static func decompress(data: Data) throws -> Data {
|
||||
let byteReader = ByteReader(data: data)
|
||||
return Data(bytes: try decompress(byteReader))
|
||||
return Data(bytes: try decompress(byteReader, byteReader.byte()))
|
||||
}
|
||||
|
||||
static func decompress(_ byteReader: ByteReader) throws -> [UInt8] {
|
||||
let decoder = try LZMA2Decoder(byteReader, byteReader.byte())
|
||||
static func decompress(_ byteReader: ByteReader, _ dictSizeByte: UInt8) throws -> [UInt8] {
|
||||
let decoder = try LZMA2Decoder(byteReader, dictSizeByte)
|
||||
try decoder.decode()
|
||||
return decoder.out
|
||||
}
|
||||
|
||||
@@ -45,15 +45,9 @@ struct XZBlock {
|
||||
let propertiesSize = try byteReader.multiByteDecode()
|
||||
guard propertiesSize == 1
|
||||
else { throw LZMA2Error.wrongDictionarySize }
|
||||
/// In case of LZMA2 filters property is a dicitonary size.
|
||||
/// Filter property for LZMA2 is a dictionary size.
|
||||
let filterPropeties = byteReader.byte()
|
||||
let closure = { (dwp: ByteReader) -> Data in
|
||||
let decoder = try LZMA2Decoder(byteReader, filterPropeties)
|
||||
|
||||
try decoder.decode()
|
||||
return Data(bytes: decoder.out)
|
||||
}
|
||||
filters.append(closure)
|
||||
filters.append { try Data(bytes: LZMA2.decompress($0, filterPropeties)) }
|
||||
} else {
|
||||
throw XZError.wrongFilterID
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user