@@ -1771,15 +1771,19 @@ size_t ZSTD_estimateCCtxSize_usingCCtxParams(const ZSTD_CCtx_params* params)
17711771{
17721772 ZSTD_compressionParameters const cParams =
17731773 ZSTD_getCParamsFromCCtxParams (params , ZSTD_CONTENTSIZE_UNKNOWN , 0 , ZSTD_cpm_noAttachDict );
1774+ ldmParams_t ldmParams = params -> ldmParams ;
17741775 ZSTD_ParamSwitch_e const useRowMatchFinder = ZSTD_resolveRowMatchFinderMode (params -> useRowMatchFinder ,
17751776 & cParams );
17761777
17771778 RETURN_ERROR_IF (params -> nbWorkers > 0 , GENERIC , "Estimate CCtx size is supported for single-threaded compression only." );
1779+ if (ldmParams .enableLdm == ZSTD_ps_enable ) {
1780+ ZSTD_ldm_adjustParameters (& ldmParams , & cParams );
1781+ }
17781782 /* estimateCCtxSize is for one-shot compression. So no buffers should
17791783 * be needed. However, we still allocate two 0-sized buffers, which can
17801784 * take space under ASAN. */
17811785 return ZSTD_estimateCCtxSize_usingCCtxParams_internal (
1782- & cParams , & params -> ldmParams , 1 , useRowMatchFinder , 0 , 0 , ZSTD_CONTENTSIZE_UNKNOWN , ZSTD_hasExtSeqProd (params ), params -> maxBlockSize );
1786+ & cParams , & ldmParams , 1 , useRowMatchFinder , 0 , 0 , ZSTD_CONTENTSIZE_UNKNOWN , ZSTD_hasExtSeqProd (params ), params -> maxBlockSize );
17831787}
17841788
17851789size_t ZSTD_estimateCCtxSize_usingCParams (ZSTD_compressionParameters cParams )
@@ -1829,6 +1833,7 @@ size_t ZSTD_estimateCStreamSize_usingCCtxParams(const ZSTD_CCtx_params* params)
18291833 RETURN_ERROR_IF (params -> nbWorkers > 0 , GENERIC , "Estimate CCtx size is supported for single-threaded compression only." );
18301834 { ZSTD_compressionParameters const cParams =
18311835 ZSTD_getCParamsFromCCtxParams (params , ZSTD_CONTENTSIZE_UNKNOWN , 0 , ZSTD_cpm_noAttachDict );
1836+ ldmParams_t ldmParams = params -> ldmParams ;
18321837 size_t const blockSize = MIN (ZSTD_resolveMaxBlockSize (params -> maxBlockSize ), (size_t )1 << cParams .windowLog );
18331838 size_t const inBuffSize = (params -> inBufferMode == ZSTD_bm_buffered )
18341839 ? ((size_t )1 << cParams .windowLog ) + blockSize
@@ -1838,8 +1843,11 @@ size_t ZSTD_estimateCStreamSize_usingCCtxParams(const ZSTD_CCtx_params* params)
18381843 : 0 ;
18391844 ZSTD_ParamSwitch_e const useRowMatchFinder = ZSTD_resolveRowMatchFinderMode (params -> useRowMatchFinder , & params -> cParams );
18401845
1846+ if (ldmParams .enableLdm == ZSTD_ps_enable ) {
1847+ ZSTD_ldm_adjustParameters (& ldmParams , & cParams );
1848+ }
18411849 return ZSTD_estimateCCtxSize_usingCCtxParams_internal (
1842- & cParams , & params -> ldmParams , 1 , useRowMatchFinder , inBuffSize , outBuffSize ,
1850+ & cParams , & ldmParams , 1 , useRowMatchFinder , inBuffSize , outBuffSize ,
18431851 ZSTD_CONTENTSIZE_UNKNOWN , ZSTD_hasExtSeqProd (params ), params -> maxBlockSize );
18441852 }
18451853}
0 commit comments