@@ -200,7 +200,8 @@ def compress(data,
200
200
"""
201
201
# Initialise stream
202
202
cdef isal_zstream stream
203
- cdef unsigned int level_buf_size = zlib_mem_level_to_isal(level, DEF_MEM_LEVEL_I)
203
+ cdef unsigned int level_buf_size
204
+ zlib_mem_level_to_isal_bufsize(level, DEF_MEM_LEVEL_I, & level_buf_size)
204
205
cdef unsigned char * level_buf = < unsigned char * > PyMem_Malloc(level_buf_size * sizeof(char ))
205
206
isal_deflate_init(& stream)
206
207
stream.level = level
@@ -416,7 +417,7 @@ cdef class Compress:
416
417
if err != COMP_OK:
417
418
check_isal_deflate_rc(err)
418
419
self .stream.level = level
419
- self .stream.level_buf_size = zlib_mem_level_to_isal (level, memLevel)
420
+ zlib_mem_level_to_isal_bufsize (level, memLevel, & self .stream.level_buf_size )
420
421
self .level_buf = < unsigned char * > PyMem_Malloc(self .stream.level_buf_size * sizeof(char ))
421
422
self .stream.level_buf = self .level_buf
422
423
@@ -749,7 +750,7 @@ cdef wbits_to_flag_and_hist_bits_inflate(int wbits,
749
750
else :
750
751
raise ValueError (" Invalid wbits value" )
751
752
752
- cdef zlib_mem_level_to_isal (int compression_level, int mem_level):
753
+ cdef zlib_mem_level_to_isal_bufsize (int compression_level, int mem_level, unsigned int * bufsize ):
753
754
"""
754
755
Convert zlib memory levels to isal equivalents
755
756
"""
@@ -763,59 +764,59 @@ cdef zlib_mem_level_to_isal(int compression_level, int mem_level):
763
764
# Hence 7,8 return large. 9 returns extra large.
764
765
if mem_level == DEF_MEM_LEVEL_I:
765
766
if compression_level == 0 :
766
- return ISAL_DEF_LVL0_DEFAULT
767
+ bufsize[ 0 ] = ISAL_DEF_LVL0_DEFAULT
767
768
elif compression_level == 1 :
768
- return ISAL_DEF_LVL1_DEFAULT
769
+ bufsize[ 0 ] = ISAL_DEF_LVL1_DEFAULT
769
770
elif compression_level == 2 :
770
- return ISAL_DEF_LVL2_DEFAULT
771
+ bufsize[ 0 ] = ISAL_DEF_LVL2_DEFAULT
771
772
elif compression_level == 3 :
772
- return ISAL_DEF_LVL3_DEFAULT
773
+ bufsize[ 0 ] = ISAL_DEF_LVL3_DEFAULT
773
774
if mem_level == 1 :
774
775
if compression_level == 0 :
775
- return ISAL_DEF_LVL0_MIN
776
+ bufsize[ 0 ] = ISAL_DEF_LVL0_MIN
776
777
elif compression_level == 1 :
777
- return ISAL_DEF_LVL1_MIN
778
+ bufsize[ 0 ] = ISAL_DEF_LVL1_MIN
778
779
elif compression_level == 2 :
779
- return ISAL_DEF_LVL2_MIN
780
+ bufsize[ 0 ] = ISAL_DEF_LVL2_MIN
780
781
elif compression_level == 3 :
781
- return ISAL_DEF_LVL3_MIN
782
+ bufsize[ 0 ] = ISAL_DEF_LVL3_MIN
782
783
elif mem_level in [2 ,3 ]:
783
784
if compression_level == 0 :
784
- return ISAL_DEF_LVL0_SMALL
785
+ bufsize[ 0 ] = ISAL_DEF_LVL0_SMALL
785
786
elif compression_level == 1 :
786
- return ISAL_DEF_LVL1_SMALL
787
+ bufsize[ 0 ] = ISAL_DEF_LVL1_SMALL
787
788
elif compression_level == 2 :
788
- return ISAL_DEF_LVL2_SMALL
789
+ bufsize[ 0 ] = ISAL_DEF_LVL2_SMALL
789
790
elif compression_level == 3 :
790
- return ISAL_DEF_LVL3_SMALL
791
+ bufsize[ 0 ] = ISAL_DEF_LVL3_SMALL
791
792
elif mem_level in [4 ,5 ,6 ]:
792
793
if compression_level == 0 :
793
- return ISAL_DEF_LVL0_MEDIUM
794
+ bufsize[ 0 ] = ISAL_DEF_LVL0_MEDIUM
794
795
elif compression_level == 1 :
795
- return ISAL_DEF_LVL1_MEDIUM
796
+ bufsize[ 0 ] = ISAL_DEF_LVL1_MEDIUM
796
797
elif compression_level == 2 :
797
- return ISAL_DEF_LVL2_MEDIUM
798
+ bufsize[ 0 ] = ISAL_DEF_LVL2_MEDIUM
798
799
elif compression_level == 3 :
799
- return ISAL_DEF_LVL3_MEDIUM
800
+ bufsize[ 0 ] = ISAL_DEF_LVL3_MEDIUM
800
801
elif mem_level in [7 ,8 ]:
801
802
if compression_level == 0 :
802
- return ISAL_DEF_LVL0_LARGE
803
+ bufsize[ 0 ] = ISAL_DEF_LVL0_LARGE
803
804
elif compression_level == 1 :
804
- return ISAL_DEF_LVL1_LARGE
805
+ bufsize[ 0 ] = ISAL_DEF_LVL1_LARGE
805
806
elif compression_level == 2 :
806
- return ISAL_DEF_LVL2_LARGE
807
+ bufsize[ 0 ] = ISAL_DEF_LVL2_LARGE
807
808
elif compression_level == 3 :
808
- return ISAL_DEF_LVL3_LARGE
809
+ bufsize[ 0 ] = ISAL_DEF_LVL3_LARGE
809
810
elif mem_level == 9 :
810
811
if compression_level == 0 :
811
- return ISAL_DEF_LVL0_EXTRA_LARGE
812
+ bufsize[ 0 ] = ISAL_DEF_LVL0_EXTRA_LARGE
812
813
elif compression_level == 1 :
813
- return ISAL_DEF_LVL1_EXTRA_LARGE
814
+ bufsize[ 0 ] = ISAL_DEF_LVL1_EXTRA_LARGE
814
815
elif compression_level == 2 :
815
- return ISAL_DEF_LVL2_EXTRA_LARGE
816
+ bufsize[ 0 ] = ISAL_DEF_LVL2_EXTRA_LARGE
816
817
elif compression_level == 3 :
817
- return ISAL_DEF_LVL3_EXTRA_LARGE
818
- raise ValueError ( " Incorrect memory level or compression level. " )
818
+ bufsize[ 0 ] = ISAL_DEF_LVL3_EXTRA_LARGE
819
+
819
820
820
821
cdef check_isal_deflate_rc(int rc):
821
822
if rc == COMP_OK:
0 commit comments