From 607ea25ea1c0397749db39a15bd52c5e0d3cf552 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 4 Apr 2023 10:52:13 -0600 Subject: containers: IntervalTree: Add a sanity check that intervals aren't backward --- lib/containers/intervaltree.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/containers/intervaltree.go b/lib/containers/intervaltree.go index d2e2732..16a9fdd 100644 --- a/lib/containers/intervaltree.go +++ b/lib/containers/intervaltree.go @@ -4,6 +4,10 @@ package containers +import ( + "fmt" +) + type interval[K Ordered[K]] struct { Min, Max K } @@ -71,11 +75,17 @@ func (t *IntervalTree[K, V]) Equal(u *IntervalTree[K, V]) bool { func (t *IntervalTree[K, V]) Insert(val V) { t.init() + min := t.MinFn(val) + max := t.MaxFn(val) + if max.Compare(min) < 0 { + panic(fmt.Errorf("containers.IntervalTree.Insert: max < min: [%v, %v]: %v", + min, max, val)) + } t.inner.Insert(intervalValue[K, V]{ Val: val, ValSpan: interval[K]{ - Min: t.MinFn(val), - Max: t.MaxFn(val), + Min: min, + Max: max, }, }) } -- cgit v1.2.3