@@ -933,17 +933,18 @@ zend_bool s_compress_value (php_memc_compression_type compression_type, zend_lon
933933
934934 case COMPRESSION_TYPE_ZLIB :
935935 {
936- compressed_size = buffer_size ;
936+ unsigned long cs = compressed_size = buffer_size ;
937937
938938 if (compression_level < 0 ) {
939939 compression_level = 0 ;
940940 } else if (compression_level > 9 ) {
941941 compression_level = 9 ;
942942 }
943943
944- int status = compress2 ((Bytef * ) buffer , & compressed_size , (Bytef * ) ZSTR_VAL (payload ), ZSTR_LEN (payload ), compression_level );
944+ int status = compress2 ((Bytef * ) buffer , & cs , (Bytef * ) ZSTR_VAL (payload ), ZSTR_LEN (payload ), compression_level );
945945
946946 if (status == Z_OK ) {
947+ compressed_size = cs ;
947948 compress_status = 1 ;
948949 compression_type_flag = MEMC_VAL_COMPRESSION_ZLIB ;
949950 }
@@ -3751,7 +3752,10 @@ zend_string *s_decompress_value (const char *payload, size_t payload_len, uint32
37513752 decompress_status = ((length = fastlz_decompress (payload , payload_len , & buffer -> val , buffer -> len )) > 0 );
37523753 }
37533754 else if (is_zlib ) {
3754- decompress_status = (uncompress ((Bytef * ) buffer -> val , & buffer -> len , (Bytef * )payload , payload_len ) == Z_OK );
3755+ unsigned long ds = buffer -> len ;
3756+
3757+ decompress_status = (uncompress ((Bytef * ) buffer -> val , & ds , (Bytef * )payload , payload_len ) == Z_OK );
3758+ buffer -> len = ds ;
37553759 }
37563760
37573761 ZSTR_VAL (buffer )[stored_length ] = '\0' ;
0 commit comments