From 870e7d019fb3cd1f0b570f4eb4f1d1ade8a44d7f Mon Sep 17 00:00:00 2001 From: n4n5 Date: Sun, 14 Dec 2025 14:24:30 -0700 Subject: [PATCH 1/5] checked operations --- crates/resvg/src/lib.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/resvg/src/lib.rs b/crates/resvg/src/lib.rs index 45a4d9d6c..311fba833 100644 --- a/crates/resvg/src/lib.rs +++ b/crates/resvg/src/lib.rs @@ -35,18 +35,18 @@ pub fn render( tree: &usvg::Tree, transform: tiny_skia::Transform, pixmap: &mut tiny_skia::PixmapMut, -) { +) -> Option<()> { let target_size = tiny_skia::IntSize::from_wh(pixmap.width(), pixmap.height()).unwrap(); let max_bbox = tiny_skia::IntRect::from_xywh( - -(target_size.width() as i32) * 2, - -(target_size.height() as i32) * 2, - target_size.width() * 5, - target_size.height() * 5, - ) - .unwrap(); + (-(target_size.width() as i32)).checked_add(2)?, + (-(target_size.height() as i32)).checked_add(2)?, + target_size.width().checked_mul(5)?, + target_size.height().checked_mul(5)?, + )?; let ctx = render::Context { max_bbox }; render::render_nodes(tree.root(), &ctx, transform, pixmap); + Some(()) } /// Renders a node onto the pixmap. From b213eff47589ea226a7617352bf5c0bab8ebb3f7 Mon Sep 17 00:00:00 2001 From: n4n5 Date: Sun, 14 Dec 2025 14:30:15 -0700 Subject: [PATCH 2/5] add expect ? --- crates/c-api/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/c-api/lib.rs b/crates/c-api/lib.rs index bb03cd03a..a34b7987c 100644 --- a/crates/c-api/lib.rs +++ b/crates/c-api/lib.rs @@ -886,7 +886,7 @@ pub extern "C" fn resvg_render( unsafe { std::slice::from_raw_parts_mut(pixmap as *mut u8, pixmap_len) }; let mut pixmap = tiny_skia::PixmapMut::from_bytes(pixmap, width, height).unwrap(); - resvg::render(&tree.0, transform.to_tiny_skia(), &mut pixmap) + resvg::render(&tree.0, transform.to_tiny_skia(), &mut pixmap).expect("Failed to render to pixmap"); } /// @brief Renders a Node by ID onto the image. From 980a3cbf16f42b6074cb4259a6bf51ce5c92f708 Mon Sep 17 00:00:00 2001 From: n4n5 Date: Sun, 14 Dec 2025 14:32:43 -0700 Subject: [PATCH 3/5] cargo fmt --- crates/c-api/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/c-api/lib.rs b/crates/c-api/lib.rs index a34b7987c..8aa2b68eb 100644 --- a/crates/c-api/lib.rs +++ b/crates/c-api/lib.rs @@ -886,7 +886,8 @@ pub extern "C" fn resvg_render( unsafe { std::slice::from_raw_parts_mut(pixmap as *mut u8, pixmap_len) }; let mut pixmap = tiny_skia::PixmapMut::from_bytes(pixmap, width, height).unwrap(); - resvg::render(&tree.0, transform.to_tiny_skia(), &mut pixmap).expect("Failed to render to pixmap"); + resvg::render(&tree.0, transform.to_tiny_skia(), &mut pixmap) + .expect("Failed to render to pixmap"); } /// @brief Renders a Node by ID onto the image. From 8afd3d226acc10d405004a4574bf6724a2f658bc Mon Sep 17 00:00:00 2001 From: n4n5 Date: Sun, 14 Dec 2025 14:46:30 -0700 Subject: [PATCH 4/5] must use --- crates/resvg/examples/minimal.rs | 2 +- crates/resvg/src/image.rs | 2 +- crates/resvg/src/lib.rs | 1 + crates/resvg/src/main.rs | 2 +- crates/resvg/tests/integration/main.rs | 4 ++-- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/resvg/examples/minimal.rs b/crates/resvg/examples/minimal.rs index 2b122270e..5669d1e28 100644 --- a/crates/resvg/examples/minimal.rs +++ b/crates/resvg/examples/minimal.rs @@ -24,6 +24,6 @@ fn main() { let pixmap_size = tree.size().to_int_size(); let mut pixmap = tiny_skia::Pixmap::new(pixmap_size.width(), pixmap_size.height()).unwrap(); - resvg::render(&tree, tiny_skia::Transform::default(), &mut pixmap.as_mut()); + resvg::render(&tree, tiny_skia::Transform::default(), &mut pixmap.as_mut()).expect("Failed to render"); pixmap.save_png(&args[2]).unwrap(); } diff --git a/crates/resvg/src/image.rs b/crates/resvg/src/image.rs index 698cbf5e2..42011b51f 100644 --- a/crates/resvg/src/image.rs +++ b/crates/resvg/src/image.rs @@ -40,7 +40,7 @@ fn render_vector( pixmap: &mut tiny_skia::PixmapMut, ) -> Option<()> { let mut sub_pixmap = tiny_skia::Pixmap::new(pixmap.width(), pixmap.height()).unwrap(); - crate::render(tree, transform, &mut sub_pixmap.as_mut()); + crate::render(tree, transform, &mut sub_pixmap.as_mut())?; pixmap.draw_pixmap( 0, 0, diff --git a/crates/resvg/src/lib.rs b/crates/resvg/src/lib.rs index 311fba833..b7141c2bd 100644 --- a/crates/resvg/src/lib.rs +++ b/crates/resvg/src/lib.rs @@ -31,6 +31,7 @@ mod render; /// Can be used to position SVG inside the `pixmap`. /// /// The produced content is in the sRGB color space. +#[must_use] pub fn render( tree: &usvg::Tree, transform: tiny_skia::Transform, diff --git a/crates/resvg/src/main.rs b/crates/resvg/src/main.rs index 896d60cc0..b31ba4eb4 100644 --- a/crates/resvg/src/main.rs +++ b/crates/resvg/src/main.rs @@ -739,7 +739,7 @@ fn render_svg(args: &Args, tree: &usvg::Tree) -> Result usize { size.width() as f32 / tree.size().width() as f32, size.height() as f32 / tree.size().height() as f32, ); - resvg::render(&tree, render_ts, &mut pixmap.as_mut()); + resvg::render(&tree, render_ts, &mut pixmap.as_mut()).expect("Failed to render"); } TestMode::Node(id) => { let node = tree.node_by_id(id).unwrap(); @@ -97,7 +97,7 @@ pub fn render_inner(name: &str, test_mode: TestMode) -> usize { size = tree.size().to_int_size().scale_by(scale).unwrap(); pixmap = tiny_skia::Pixmap::new(size.width(), size.height()).unwrap(); let render_ts = tiny_skia::Transform::from_scale(scale, scale); - resvg::render(&tree, render_ts, &mut pixmap.as_mut()); + resvg::render(&tree, render_ts, &mut pixmap.as_mut()).expect("Failed to render"); } } From bfc1d848baa48cd77571e3bf46e09fa742b6877a Mon Sep 17 00:00:00 2001 From: n4n5 Date: Sun, 14 Dec 2025 14:48:27 -0700 Subject: [PATCH 5/5] fmt --- crates/resvg/examples/minimal.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/resvg/examples/minimal.rs b/crates/resvg/examples/minimal.rs index 5669d1e28..c44cf4391 100644 --- a/crates/resvg/examples/minimal.rs +++ b/crates/resvg/examples/minimal.rs @@ -24,6 +24,7 @@ fn main() { let pixmap_size = tree.size().to_int_size(); let mut pixmap = tiny_skia::Pixmap::new(pixmap_size.width(), pixmap_size.height()).unwrap(); - resvg::render(&tree, tiny_skia::Transform::default(), &mut pixmap.as_mut()).expect("Failed to render"); + resvg::render(&tree, tiny_skia::Transform::default(), &mut pixmap.as_mut()) + .expect("Failed to render"); pixmap.save_png(&args[2]).unwrap(); }