From 736f79187063b4a06825fd3dada7ded9a04c46b7 Mon Sep 17 00:00:00 2001 From: 5cript Date: Tue, 25 Aug 2026 18:37:08 +0200 Subject: [PATCH 1/2] Fixed missing return. --- include/interval-tree/interval_tree.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/interval-tree/interval_tree.hpp b/include/interval-tree/interval_tree.hpp index abdbdd0..28860bd 100644 --- a/include/interval-tree/interval_tree.hpp +++ b/include/interval-tree/interval_tree.hpp @@ -347,7 +347,7 @@ namespace lib_interval_tree */ value_type operator-(interval const& other) const { - interval_kind::distance(*this, other); + return interval_kind::distance(*this, other); } /** From 5c9f5e92af7f8ab092016e3d6c5206f36c9c71b8 Mon Sep 17 00:00:00 2001 From: 5cript Date: Tue, 25 Aug 2026 18:37:32 +0200 Subject: [PATCH 2/2] Added test for missing return. --- tests/interval_tests.hpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/interval_tests.hpp b/tests/interval_tests.hpp index fa71526..4bb21ad 100644 --- a/tests/interval_tests.hpp +++ b/tests/interval_tests.hpp @@ -549,6 +549,27 @@ TEST_F(DistanceTests, DistanceAdjacent2) EXPECT_EQ(base5 - other5, 0); } +TEST_F(DistanceTests, DynamicDistance) +{ + constexpr auto c = interval_border::closed; + constexpr auto ca = interval_border::closed_adjacent; + + // Regression: interval::operator- used to drop its return statement. + EXPECT_EQ(i(1, 5, c, c) - i(7, 9, c, c), 2); + + // right side: + EXPECT_EQ(i(5, 10, c, c) - i(15, 18, c, c), 5); + + // left side: + EXPECT_EQ(i(5, 10, c, c) - i(0, 1, c, c), 4); + + // overlapping and adjacent intervals have no distance: + EXPECT_EQ(i(-35, 96, c, c) - i(-20, 600, c, c), 0); + EXPECT_EQ(i(5, 10, c, c) - i(10, 18, c, c), 0); + EXPECT_EQ(i(5, 10, c, c) - i(0, 5, c, c), 0); + EXPECT_EQ(i(0, 5, c, ca) - i(6, 10, ca, c), 0); +} + TEST_F(OverlapTests, DynamicOverlapContainedCompletely) { auto containment = i(-100, 100, interval_border::closed, interval_border::closed);