mirror of
				https://github.com/facebook/zstd.git
				synced 2025-10-31 16:47:48 +02:00 
			
		
		
		
	fixed zlib wrapper
it was invoking ZSTD_initCStream_advanced() with pledgedSrcSize==0 and contentSizeFlag=1 which means "empty" while the intention was to mean "unknown". The contentSizeFlag==1 is new, it is a consequence of setting this value to 1 by default. The solution selected here is to pass ZSTD_CONTENTSIZE_UNKNOWN to mean "unknown". So contentSizeFlag remains set (it wasn't in previous versions).
This commit is contained in:
		| @@ -518,7 +518,7 @@ size_t ZSTD_estimateDDictSize(size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMet | ||||
|  | ||||
| <pre><b>ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize); | ||||
| </b><p>   same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`. | ||||
|    All fields of `ZSTD_frameParameters` are set to default (0)  | ||||
|    All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0  | ||||
| </p></pre><BR> | ||||
|  | ||||
| <pre><b>size_t ZSTD_checkCParams(ZSTD_compressionParameters params); | ||||
| @@ -634,7 +634,7 @@ ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); | ||||
| size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize);   </b>/**< pledgedSrcSize must be correct. If it is not known at init time, use ZSTD_CONTENTSIZE_UNKNOWN. Note that, for compatibility with older programs, a size of 0 is interepreted as "unknown". But it may change in some future version to mean "empty". */<b> | ||||
| size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel); </b>/**< creates of an internal CDict (incompatible with static CCtx), except if dict == NULL or dictSize < 8, in which case no dict is used. Note: dict is loaded with ZSTD_dm_auto (treated as a full zstd dictionary if it begins with ZSTD_MAGIC_DICTIONARY, else as raw content) and ZSTD_dlm_byCopy.*/<b> | ||||
| size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs, const void* dict, size_t dictSize, | ||||
|                                              ZSTD_parameters params, unsigned long long pledgedSrcSize);  </b>/**< pledgedSrcSize : If srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. */<b> | ||||
|                                              ZSTD_parameters params, unsigned long long pledgedSrcSize);  </b>/**< pledgedSrcSize : if srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. */<b> | ||||
| size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict);  </b>/**< note : cdict will just be referenced, and must outlive compression session */<b> | ||||
| size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize);  </b>/**< same as ZSTD_initCStream_usingCDict(), with control over frame parameters */<b> | ||||
| </pre></b><BR> | ||||
|   | ||||
| @@ -613,7 +613,7 @@ ZSTDLIB_API ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, uns | ||||
|  | ||||
| /*! ZSTD_getParams() : | ||||
| *   same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`. | ||||
| *   All fields of `ZSTD_frameParameters` are set to default (0) */ | ||||
| *   All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0 */ | ||||
| ZSTDLIB_API ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize); | ||||
|  | ||||
| /*! ZSTD_checkCParams() : | ||||
|   | ||||
| @@ -270,7 +270,7 @@ ZEXTERN int ZEXPORT z_deflateSetDictionary OF((z_streamp strm, | ||||
|             zwc->zbc = ZSTD_createCStream_advanced(zwc->customMem); | ||||
|             if (zwc->zbc == NULL) return ZWRAPC_finishWithError(zwc, strm, 0); | ||||
|         } | ||||
|         { int res = ZWRAP_initializeCStream(zwc, dictionary, dictLength, 0); | ||||
|         { int res = ZWRAP_initializeCStream(zwc, dictionary, dictLength, ZSTD_CONTENTSIZE_UNKNOWN); | ||||
|           if (res != Z_OK) return ZWRAPC_finishWithError(zwc, strm, res); } | ||||
|         zwc->comprState = ZWRAP_useReset; | ||||
|     } | ||||
| @@ -295,7 +295,7 @@ ZEXTERN int ZEXPORT z_deflate OF((z_streamp strm, int flush)) | ||||
|     if (zwc->zbc == NULL) { | ||||
|         zwc->zbc = ZSTD_createCStream_advanced(zwc->customMem); | ||||
|         if (zwc->zbc == NULL) return ZWRAPC_finishWithError(zwc, strm, 0); | ||||
|         { int const initErr = ZWRAP_initializeCStream(zwc, NULL, 0, (flush == Z_FINISH) ? strm->avail_in : 0); | ||||
|         { int const initErr = ZWRAP_initializeCStream(zwc, NULL, 0, (flush == Z_FINISH) ? strm->avail_in : ZSTD_CONTENTSIZE_UNKNOWN); | ||||
|           if (initErr != Z_OK) return ZWRAPC_finishWithError(zwc, strm, initErr); } | ||||
|         if (flush != Z_FINISH) zwc->comprState = ZWRAP_useReset; | ||||
|     } else { | ||||
| @@ -308,7 +308,7 @@ ZEXTERN int ZEXPORT z_deflate OF((z_streamp strm, int flush)) | ||||
|                     return ZWRAPC_finishWithError(zwc, strm, 0); | ||||
|                 } | ||||
|             } else { | ||||
|                 int const res = ZWRAP_initializeCStream(zwc, NULL, 0, (flush == Z_FINISH) ? strm->avail_in : 0); | ||||
|                 int const res = ZWRAP_initializeCStream(zwc, NULL, 0, (flush == Z_FINISH) ? strm->avail_in : ZSTD_CONTENTSIZE_UNKNOWN); | ||||
|                 if (res != Z_OK) return ZWRAPC_finishWithError(zwc, strm, res); | ||||
|                 if (flush != Z_FINISH) zwc->comprState = ZWRAP_useReset; | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user