         case .lzma:
             #if (!SWCOMPRESSION_POD_ZIP) || (SWCOMPRESSION_POD_ZIP && SWCOMPRESSION_POD_LZMA)
                 pointerData.index += 4 // Skipping LZMA SDK version and size of properties.
-                fileBytes = try LZMA.decompress(pointerData, uncompressedSize: uncompSize)
+                fileData = Data(bytes: try LZMA.decompress(pointerData, uncompressedSize: uncompSize))
             #else
                 throw ZipError.compressionNotSupported
             #endif

        var compSize = hasDataDescriptor ? info.cdEntry.compSize : info.localHeader.compSize
        var crc32 = hasDataDescriptor ? info.cdEntry.crc32 : info.localHeader.crc32

        let fileBytes: [UInt8]
        let pointerData = DataWithPointer(data: data)
        pointerData.index = info.localHeader.dataOffset
        switch info.compressionMethod {
        case .copy:
            fileBytes = pointerData.bytes(count: Int(truncatingIfNeeded: uncompSize))
        case .deflate:
            let bitReader = BitReader(data: pointerData.data, bitOrder: .reversed)
            bitReader.index = pointerData.index
            fileBytes = try Deflate.decompress(bitReader)
            // Sometimes pointerData stays in not-aligned state after deflate decompression.
            // Following line ensures that this is not the case.
            bitReader.align()

            uncompSize = pointerData.uint64(count: sizeOfSizeField)
        }

        guard compSize == realCompSize && uncompSize == fileData.count
            else { throw ZipError.wrongSize }
        let crcError = crc32 != CheckSums.crc32(fileData)

        return (fileData, crcError)
    }

    public static func info(container data: Data) throws -> [ZipEntryInfo] {
