From f940ae9edf1d0d7525a4e1c4bc45c140f0d813ca Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 24 Aug 2021 15:58:57 +0200 Subject: [PATCH] Fix alignment corner case (infinite size in infinite range) --- emath/src/align.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/emath/src/align.rs b/emath/src/align.rs index a6039b16..77bf5197 100644 --- a/emath/src/align.rs +++ b/emath/src/align.rs @@ -71,6 +71,13 @@ impl Align { /// assert_eq!(emath::Align::Min.align_size_within_range(f32::INFINITY, 10.0..=20.0), 10.0..=f32::INFINITY); /// assert_eq!(emath::Align::Center.align_size_within_range(f32::INFINITY, 10.0..=20.0), f32::NEG_INFINITY..=f32::INFINITY); /// assert_eq!(emath::Align::Max.align_size_within_range(f32::INFINITY, 10.0..=20.0), f32::NEG_INFINITY..=20.0); + /// + /// assert_eq!(emath::Align::Min.align_size_within_range(f32::INFINITY, 10.0..=f32::INFINITY), 10.0..=f32::INFINITY); + /// assert_eq!(emath::Align::Min.align_size_within_range(f32::INFINITY, f32::NEG_INFINITY..=10.0), f32::NEG_INFINITY..=10.0); + /// assert_eq!(emath::Align::Center.align_size_within_range(f32::INFINITY, 10.0..=f32::INFINITY), 10.0..=f32::INFINITY); + /// assert_eq!(emath::Align::Center.align_size_within_range(f32::INFINITY, f32::NEG_INFINITY..=10.0), f32::NEG_INFINITY..=10.0); + /// assert_eq!(emath::Align::Max.align_size_within_range(f32::INFINITY, 10.0..=f32::INFINITY), 10.0..=f32::INFINITY); + /// assert_eq!(emath::Align::Max.align_size_within_range(f32::INFINITY, f32::NEG_INFINITY..=10.0), f32::NEG_INFINITY..=10.0); /// ``` #[inline] pub fn align_size_within_range( @@ -80,6 +87,11 @@ impl Align { ) -> RangeInclusive { let min = *range.start(); let max = *range.end(); + + if max - min == f32::INFINITY && size == f32::INFINITY { + return range; + } + match self { Self::Min => min..=min + size, Self::Center => {