5

私はlibSnappyで圧縮を行うNSDataに短いカテゴリを書きました。圧縮中はチャームのように機能しますが、解凍コードの結果はになりSNAPPY_INVALID_INPUTます。興味深いのは、無効なOp-Codeにもかかわらず、snappyがまだ私resultのバッファを非圧縮データで埋めていることです。なぜスナッピーが私にこれを投げているのか誰かが知っていますか?

- (NSData*)dataBySnappyUncompression {
    NSMutableData *result = nil;
    if (self.bytes != NULL) {
        size_t uncompress_result = 0;
        snappy_status opCode = snappy_uncompressed_length(self.bytes, self.length, &uncompress_result);
        if (opCode == SNAPPY_OK) {
            result = [NSMutableData dataWithLength:uncompress_result];
            opCode = snappy_uncompress(self.bytes, self.length, [result mutableBytes], &uncompress_result);
            if (opCode == SNAPPY_OK) {
                [result setLength:uncompress_result];
                return result;
            }
        }
    }
    LEPLog(@"Failed snappy de-compress: tried to de-compress %lu bytes", self.length);
    NSAssert(nil, @"Failed Snappy de-compress");
    result = nil;
    return result;
}

NSKeyedArchiver圧縮/非圧縮されているデータは呼び出しの結果であることに注意してください。

4

0 に答える 0