From: Yann Collet Date: Mon, 2 Jun 2014 07:13:16 +0000 (+0100) Subject: restored continuous streaming mode X-Git-Tag: upstream/1.9.3~263^2~8^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ec717699c7841b4471ee6566d80f4835ace8438b;p=platform%2Fupstream%2Flz4.git restored continuous streaming mode --- diff --git a/lz4.c b/lz4.c index ec0f1b0..4c84e92 100755 --- a/lz4.c +++ b/lz4.c @@ -738,33 +738,48 @@ void LZ4_renormDictT(LZ4_dict_t_internal* LZ4_dict) int LZ4_compress_usingDict (LZ4_dict_t* LZ4_dict, const char* source, char* dest, int inputSize) { LZ4_dict_t_internal* streamPtr = (LZ4_dict_t_internal*)LZ4_dict; - int result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, 0, notLimited, byU32, usingExtDict); + const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize; - streamPtr->dictionary = (const BYTE*)source; - streamPtr->dictSize = (U32)inputSize; - streamPtr->currentOffset += (U32)inputSize; - /* - streamPtr->dictSize += (U32)inputSize; - streamPtr->currentOffset += (U32)inputSize; - */ - return result; + if (dictEnd == (const BYTE*)source) + { + int result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, 0, notLimited, byU32, withPrefix64k); + streamPtr->dictSize += (U32)inputSize; + streamPtr->currentOffset += (U32)inputSize; + return result; + } + + { + int result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, 0, notLimited, byU32, usingExtDict); + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)inputSize; + streamPtr->currentOffset += (U32)inputSize; + return result; + } } int LZ4_compress_limitedOutput_usingDict (LZ4_dict_t* LZ4_dict, const char* source, char* dest, int inputSize, int maxOutputSize) { LZ4_dict_t_internal* streamPtr = (LZ4_dict_t_internal*)LZ4_dict; - int result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict); + const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize; - streamPtr->dictionary = (const BYTE*)source; - streamPtr->dictSize = (U32)inputSize; - streamPtr->currentOffset += (U32)inputSize; - /* - streamPtr->dictSize += (U32)inputSize; - streamPtr->currentOffset += (U32)inputSize; - */ - return result; + if (dictEnd == (const BYTE*)source) + { + int result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k); + streamPtr->dictSize += (U32)inputSize; + streamPtr->currentOffset += (U32)inputSize; + return result; + } + + { + int result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict); + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)inputSize; + streamPtr->currentOffset += (U32)inputSize; + return result; + } } + // Hidden debug function, to force separate dictionary mode int LZ4_compress_forceExtDict (LZ4_dict_t* LZ4_dict, const char* source, char* dest, int inputSize) {