Skip to content

Commit 8febe62

Browse files
committed
use ZSTD_LITBUFFEREXTRASIZE constant
1 parent 53a19f1 commit 8febe62

File tree

1 file changed

+29
-147
lines changed

1 file changed

+29
-147
lines changed

lib/decompress/zstd_decompress_block.rs

Lines changed: 29 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
388404
unsafe 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

Comments
 (0)