Merge pull request #88 from emielbeinema/79-error-for-apng

Return an error when an APNG header is encountered
This commit is contained in:
Josh Holmer 2017-09-30 22:32:50 -04:00 committed by GitHub
commit 7822d89d65
3 changed files with 24 additions and 0 deletions

View file

@ -239,6 +239,8 @@ impl PngData {
};
if header.0 == "IDAT" {
idat_headers.extend(header.1);
} else if header.0 == "acTL" {
return Err(PngError::new("APNG files are not (yet) supported"));
} else {
aux_headers.insert(header.0, header.1);
}

BIN
tests/files/apng_file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View file

@ -31,6 +31,19 @@ fn optimize_from_memory_corrupted() {
assert!(result.is_err());
}
#[test]
fn optimize_from_memory_apng() {
let mut in_file = File::open("tests/files/apng_file.png").unwrap();
let mut in_file_buf: Vec<u8> = Vec::new();
in_file.read_to_end(&mut in_file_buf).unwrap();
let mut opts: oxipng::Options = Default::default();
opts.verbosity = Some(1);
let result = oxipng::optimize_from_memory(&in_file_buf, &opts);
assert!(result.is_err());
}
#[test]
fn optimize() {
let mut opts: oxipng::Options = Default::default();
@ -48,3 +61,12 @@ fn optimize_corrupted() {
let result = oxipng::optimize(Path::new("tests/files/corrupted_header.png"), &opts);
assert!(result.is_err());
}
#[test]
fn optimize_apng() {
let mut opts: oxipng::Options = Default::default();
opts.verbosity = Some(1);
let result = oxipng::optimize(Path::new("tests/files/apng_file.png"), &opts);
assert!(result.is_err());
}