Skip to content

Commit faed28b

Browse files
committed
fix
1 parent 8f13c4b commit faed28b

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

crates/stdlib/src/lzma.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -385,14 +385,13 @@ mod _lzma {
385385
Ok(filters)
386386
}
387387

388-
// lzma_encoder_presets.c
389-
const DEFAULT_LC: u32 = 3;
390-
const DEFAULT_LP: u32 = 0;
391-
const DEFAULT_PB: u32 = 2;
388+
const DEFAULT_LC: u32 = liblzma_sys::LZMA_LC_DEFAULT;
389+
const DEFAULT_LP: u32 = liblzma_sys::LZMA_LP_DEFAULT;
390+
const DEFAULT_PB: u32 = liblzma_sys::LZMA_PB_DEFAULT;
392391
const DICT_POW2: [u8; 10] = [18, 20, 21, 22, 22, 23, 23, 24, 25, 26];
393392

394393
fn preset_dict_size(preset: u32) -> u32 {
395-
let level = (preset & 0x1F) as usize;
394+
let level = (preset & liblzma_sys::LZMA_PRESET_LEVEL_MASK) as usize;
396395
if level > 9 {
397396
return 0;
398397
}
@@ -460,24 +459,28 @@ mod _lzma {
460459
dict.set_item("dict_size", vm.new_pyobj(dict_size), vm)?;
461460
}
462461
FILTER_LZMA2 => {
463-
if props.is_empty() {
462+
if props.len() != 1 {
464463
return Err(new_lzma_error("Invalid or unsupported options", vm));
465464
}
466465
let dict_size = lzma2_dict_size_from_prop(props[0]);
467466
dict.set_item("dict_size", vm.new_pyobj(dict_size), vm)?;
468467
}
469468
FILTER_DELTA => {
470-
if props.is_empty() {
469+
if props.len() != 1 {
471470
return Err(new_lzma_error("Invalid or unsupported options", vm));
472471
}
473472
let dist = props[0] as u32 + 1;
474473
dict.set_item("dist", vm.new_pyobj(dist), vm)?;
475474
}
476475
FILTER_X86 | FILTER_POWERPC | FILTER_IA64 | FILTER_ARM | FILTER_ARMTHUMB
477476
| FILTER_SPARC => {
478-
if props.len() == 4 {
477+
if props.is_empty() {
478+
// default: no start_offset
479+
} else if props.len() == 4 {
479480
let start_offset = u32::from_le_bytes([props[0], props[1], props[2], props[3]]);
480481
dict.set_item("start_offset", vm.new_pyobj(start_offset), vm)?;
482+
} else {
483+
return Err(new_lzma_error("Invalid or unsupported options", vm));
481484
}
482485
}
483486
_ => {

0 commit comments

Comments
 (0)