From dcf9f67aa12e217d34ecc0540f8a0ec555a85648 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Thu, 25 Sep 2025 00:43:17 +0100 Subject: [PATCH] Upgrade the png crate to 0.18 Signed-off-by: Nico Burns --- Cargo.toml | 2 +- src/mask.rs | 7 +++++-- src/pixmap.rs | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8e3f7c6..4a10f2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ arrayvec = { version = "0.7", default-features = false } bytemuck = { version = "1.12", features = ["aarch64_simd"] } cfg-if = "1" log = "0.4" -png = { version = "0.17", optional = true } +png = { version = "0.18", optional = true } tiny-skia-path = { version = "0.11.4", path = "path", default-features = false } [features] diff --git a/src/mask.rs b/src/mask.rs index 8560c79..6bdedeb 100644 --- a/src/mask.rs +++ b/src/mask.rs @@ -183,10 +183,13 @@ impl Mask { std::io::Error::new(std::io::ErrorKind::Other, msg).into() } - let mut decoder = png::Decoder::new(data); + let mut decoder = png::Decoder::new(std::io::BufReader::new(std::io::Cursor::new(data))); decoder.set_transformations(png::Transformations::normalize_to_color8()); let mut reader = decoder.read_info()?; - let mut img_data = vec![0; reader.output_buffer_size()]; + let output_buffer_size = reader + .output_buffer_size() + .ok_or(png::DecodingError::LimitsExceeded)?; + let mut img_data = vec![0; output_buffer_size]; let info = reader.next_frame(&mut img_data)?; if info.bit_depth != png::BitDepth::Eight { diff --git a/src/pixmap.rs b/src/pixmap.rs index c583355..0a596fd 100644 --- a/src/pixmap.rs +++ b/src/pixmap.rs @@ -78,10 +78,13 @@ impl Pixmap { std::io::Error::new(std::io::ErrorKind::Other, msg).into() } - let mut decoder = png::Decoder::new(data); + let mut decoder = png::Decoder::new(std::io::BufReader::new(std::io::Cursor::new(data))); decoder.set_transformations(png::Transformations::normalize_to_color8()); let mut reader = decoder.read_info()?; - let mut img_data = vec![0; reader.output_buffer_size()]; + let output_buffer_size = reader + .output_buffer_size() + .ok_or(png::DecodingError::LimitsExceeded)?; + let mut img_data = vec![0; output_buffer_size]; let info = reader.next_frame(&mut img_data)?; if info.bit_depth != png::BitDepth::Eight {