Add test case for OOB access in multi-threading
diff --git a/sparse_strips/vello_sparse_tests/tests/issues.rs b/sparse_strips/vello_sparse_tests/tests/issues.rs index d6996cb..575b534 100644 --- a/sparse_strips/vello_sparse_tests/tests/issues.rs +++ b/sparse_strips/vello_sparse_tests/tests/issues.rs
@@ -7,8 +7,10 @@ use vello_common::color::palette::css::{DARK_BLUE, LIME, REBECCA_PURPLE}; use vello_common::kurbo::{BezPath, Rect, Shape, Stroke}; use vello_common::peniko::{Color, ColorStop, Fill, Gradient}; +use vello_common::pixmap::Pixmap; use vello_cpu::color::palette::css::RED; use vello_cpu::peniko::Compose; +use vello_cpu::{Level, RenderContext, RenderMode, RenderSettings}; use vello_dev_macros::vello_test; #[vello_test(width = 8, height = 8)] @@ -374,3 +376,20 @@ ])); ctx.fill_rect(&viewport); } + +#[test] +fn multi_threading_oob_access() { + let settings = RenderSettings { + level: Level::new(), + num_threads: 4, + }; + let mut ctx = RenderContext::new_with(100, 100, &settings); + let mut pixmap = Pixmap::new(100, 100); + + ctx.fill_path(&Rect::new(0.0, 0.0, 50.0, 50.0).to_path(0.1)); + ctx.flush(); + ctx.render_to_pixmap(&mut pixmap, RenderMode::OptimizeQuality); + ctx.fill_path(&Rect::new(50.0, 50.0, 100.0, 100.0).to_path(0.1)); + ctx.flush(); + ctx.render_to_pixmap(&mut pixmap, RenderMode::OptimizeQuality); +} \ No newline at end of file