cairo tests at least don't crash now
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 25 Apr 2025 20:18:11 +0000 (13:18 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 25 Apr 2025 20:18:11 +0000 (13:18 -0700)
rust/pspp/src/output/cairo/fsm.rs
rust/pspp/src/output/pivot/test.rs

index bb5c3544df300d0b8999d12326c1f6e19eb5db91..4d501f81f2101822486cc1a3cd60b7059575915c 100644 (file)
@@ -392,7 +392,7 @@ impl CairoDevice<'_> {
                 if cell.rotate {
                     bb[Axis2::X].end = bb[Axis2::X].end.saturating_sub(footnote_adjustment);
                 } else {
-                    bb[Axis2::X].end += footnote_adjustment;
+                    bb[Axis2::X].end = bb[Axis2::X].end.saturating_add(footnote_adjustment);
                 }
 
                 // Clean up.
@@ -524,7 +524,10 @@ impl Device for CairoDevice<'_> {
 
     fn measure_cell_height(&self, cell: &DrawCell, width: usize) -> usize {
         let margins = &cell.style.cell_style.margins;
-        let bb = Rect2::new(0..width - px_to_xr(margins[Axis2::X].len()), 0..usize::MAX);
+        let bb = Rect2::new(
+            0..width.saturating_sub(px_to_xr(margins[Axis2::X].len())),
+            0..usize::MAX,
+        );
         self.layout_cell(cell, bb, &Rect2::default()).y() + margin(cell, Axis2::Y)
     }
 
index 3d6fe8ad2788f21a474f66ed69dc0012c4b650bc..5261c0fa471e1c4e2c6b8e1d5e7872f481559609 100644 (file)
@@ -144,7 +144,7 @@ fn assert_rendering(name: &str, pivot_table: &PivotTable, expected: &str) {
     }
 
     if let Some(dir) = std::env::var_os("PSPP_TEST_OUTPUT_DIR") {
-        let mut cairo = CairoDriver::new(Path::new(&dir).join(name).with_extension(".pdf"));
+        let mut cairo = CairoDriver::new(Path::new(&dir).join(name).with_extension("pdf"));
         let item = Arc::new(Item::new(Details::Table(Box::new(pivot_table.clone()))));
         cairo.write(&item);
     }