@@ -385,6 +385,22 @@ unsafe fn ZSTD_allocateLiteralsBuffer(
385385 } ;
386386}
387387
388+ const ZSTD_LBMIN : usize = 64 ;
389+ const ZSTD_LBMAX : usize = 128 << 10 ;
390+
391+ const ZSTD_DECODER_INTERNAL_BUFFER : usize = 1 << 16 ;
392+
393+ const ZSTD_LITBUFFEREXTRASIZE : usize = {
394+ // just a const clamp
395+ if ZSTD_DECODER_INTERNAL_BUFFER < ZSTD_LBMIN {
396+ ZSTD_LBMIN
397+ } else if ZSTD_DECODER_INTERNAL_BUFFER > ZSTD_LBMAX {
398+ ZSTD_LBMAX
399+ } else {
400+ ZSTD_DECODER_INTERNAL_BUFFER
401+ }
402+ } ;
403+
388404unsafe fn ZSTD_decodeLiteralsBlock (
389405 mut dctx : * mut ZSTD_DCtx ,
390406 mut src : * const core:: ffi:: c_void ,
@@ -407,7 +423,7 @@ unsafe fn ZSTD_decodeLiteralsBlock(
407423 match litEncType {
408424 SymbolEncodingType_e :: set_repeat => {
409425 if ( * dctx) . litEntropy == 0 {
410- return -( ZSTD_error_dictionary_corrupted as std :: ffi:: c_int ) as size_t ;
426+ return -( ZSTD_error_dictionary_corrupted as core :: ffi:: c_int ) as size_t ;
411427 }
412428 }
413429 SymbolEncodingType_e :: set_compressed => { }
@@ -472,55 +488,16 @@ unsafe fn ZSTD_decodeLiteralsBlock(
472488 libc:: memcpy (
473489 ( * dctx) . litBuffer as * mut core:: ffi:: c_void ,
474490 istart. offset ( lhSize_0 as isize ) as * const core:: ffi:: c_void ,
475- litSize_0. wrapping_sub (
476- ( if 64
477- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
478- ( 1 ) << 16
479- } else {
480- ( 128 ) << 10
481- } )
482- {
483- 64
484- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
485- ( 1 ) << 16
486- } else {
487- ( 128 ) << 10
488- } ) as size_t ,
489- ) as libc:: size_t ,
491+ litSize_0. wrapping_sub ( ZSTD_LITBUFFEREXTRASIZE as size_t ) as libc:: size_t ,
490492 ) ;
491493 libc:: memcpy (
492494 ( ( * dctx) . litExtraBuffer ) . as_mut_ptr ( ) as * mut core:: ffi:: c_void ,
493495 istart
494496 . offset ( lhSize_0 as isize )
495497 . offset ( litSize_0 as isize )
496- . offset (
497- -( ( if 64
498- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
499- ( 1 ) << 16
500- } else {
501- ( 128 ) << 10
502- } )
503- {
504- 64
505- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
506- ( 1 ) << 16
507- } else {
508- ( 128 ) << 10
509- } ) as isize ) ,
510- ) as * const core:: ffi:: c_void ,
511- ( if 64
512- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
513- ( 1 ) << 16
514- } else {
515- ( 128 ) << 10
516- } )
517- {
518- 64
519- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
520- ( 1 ) << 16
521- } else {
522- ( 128 ) << 10
523- } ) as core:: ffi:: c_ulong as libc:: size_t ,
498+ . offset ( -( ZSTD_LITBUFFEREXTRASIZE as isize ) )
499+ as * const core:: ffi:: c_void ,
500+ ZSTD_LITBUFFEREXTRASIZE ,
524501 ) ;
525502 } else {
526503 libc:: memcpy (
@@ -592,38 +569,12 @@ unsafe fn ZSTD_decodeLiteralsBlock(
592569 ptr:: write_bytes (
593570 ( * dctx) . litBuffer as * mut u8 ,
594571 * istart. offset ( lhSize_1 as isize ) ,
595- litSize_1. wrapping_sub (
596- ( if 64
597- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
598- ( 1 ) << 16
599- } else {
600- ( 128 ) << 10
601- } )
602- {
603- 64
604- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
605- ( 1 ) << 16
606- } else {
607- ( 128 ) << 10
608- } ) as size_t ,
609- ) as libc:: size_t ,
572+ litSize_1. wrapping_sub ( ZSTD_LITBUFFEREXTRASIZE as size_t ) as libc:: size_t ,
610573 ) ;
611574 ptr:: write_bytes (
612575 ( ( * dctx) . litExtraBuffer ) . as_mut_ptr ( ) as * mut u8 ,
613576 * istart. offset ( lhSize_1 as isize ) ,
614- ( if 64
615- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
616- ( 1 ) << 16
617- } else {
618- ( 128 ) << 10
619- } )
620- {
621- 64
622- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
623- ( 1 ) << 16
624- } else {
625- ( 128 ) << 10
626- } ) as core:: ffi:: c_ulong as libc:: size_t ,
577+ ZSTD_LITBUFFEREXTRASIZE ,
627578 ) ;
628579 } else {
629580 ptr:: write_bytes (
@@ -761,85 +712,16 @@ unsafe fn ZSTD_decodeLiteralsBlock(
761712 if ( * dctx) . litBufferLocation == LitLocation :: ZSTD_split {
762713 libc:: memcpy (
763714 ( ( * dctx) . litExtraBuffer ) . as_mut_ptr ( ) as * mut core:: ffi:: c_void ,
764- ( ( * dctx) . litBufferEnd ) . offset (
765- -( ( if 64
766- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
767- ( 1 ) << 16
768- } else {
769- ( 128 ) << 10
770- } )
771- {
772- 64
773- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
774- ( 1 ) << 16
775- } else {
776- ( 128 ) << 10
777- } ) as isize ) ,
778- ) as * const core:: ffi:: c_void ,
779- ( if 64
780- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
781- ( 1 ) << 16
782- } else {
783- ( 128 ) << 10
784- } )
785- {
786- 64
787- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
788- ( 1 ) << 16
789- } else {
790- ( 128 ) << 10
791- } ) as core:: ffi:: c_ulong as libc:: size_t ,
715+ ( ( * dctx) . litBufferEnd ) . sub ( ZSTD_LITBUFFEREXTRASIZE ) as * const core:: ffi:: c_void ,
716+ ZSTD_LITBUFFEREXTRASIZE ,
792717 ) ;
793718 libc:: memmove (
794- ( ( * dctx) . litBuffer )
795- . offset (
796- ( if 64
797- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
798- ( 1 ) << 16
799- } else {
800- ( 128 ) << 10
801- } )
802- {
803- 64
804- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
805- ( 1 ) << 16
806- } else {
807- ( 128 ) << 10
808- } ) as isize ,
809- )
810- . offset ( -( 32 ) ) as * mut core:: ffi:: c_void ,
719+ ( ( * dctx) . litBuffer ) . add ( ZSTD_LITBUFFEREXTRASIZE ) . sub ( 32 ) as * mut core:: ffi:: c_void ,
811720 ( * dctx) . litBuffer as * const core:: ffi:: c_void ,
812- litSize. wrapping_sub (
813- ( if 64
814- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
815- ( 1 ) << 16
816- } else {
817- ( 128 ) << 10
818- } )
819- {
820- 64
821- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
822- ( 1 ) << 16
823- } else {
824- ( 128 ) << 10
825- } ) as size_t ,
826- ) as libc:: size_t ,
827- ) ;
828- ( * dctx) . litBuffer = ( ( * dctx) . litBuffer ) . offset (
829- ( ( if 64
830- > ( if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
831- ( 1 ) << 16
832- } else {
833- ( 128 ) << 10
834- } )
835- {
836- 64
837- } else if ( ( 1 ) << 16 ) < ( 128 ) << 10 {
838- ( 1 ) << 16
839- } else {
840- ( 128 ) << 10
841- } ) - WILDCOPY_OVERLENGTH ) as isize ,
721+ litSize. wrapping_sub ( ZSTD_LITBUFFEREXTRASIZE as size_t ) as libc:: size_t ,
842722 ) ;
723+ ( * dctx) . litBuffer = ( ( * dctx) . litBuffer )
724+ . offset ( ( ZSTD_LITBUFFEREXTRASIZE as i32 - WILDCOPY_OVERLENGTH ) as isize ) ;
843725 ( * dctx) . litBufferEnd = ( ( * dctx) . litBufferEnd ) . offset ( -( WILDCOPY_OVERLENGTH as isize ) ) ;
844726 }
845727 if ERR_isError ( hufSuccess) != 0 {
0 commit comments