changeset 21259:5c75425daf63

lib: seq_range_array_*(): Fix seq2=2^32-1 handling Adding/merging it when it already existed added duplicated seq_range.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 01 Dec 2016 02:26:08 +0200
parents f50c3b9dfbba
children 0dd59dcdd804
files src/lib/seq-range-array.c src/lib/test-seq-range-array.c
diffstat 2 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/seq-range-array.c	Thu Dec 01 00:56:11 2016 +0200
+++ b/src/lib/seq-range-array.c	Thu Dec 01 02:26:08 2016 +0200
@@ -163,7 +163,7 @@
 		idx1--;
 
 	if (idx1 == idx2 &&
-	    (idx2 == count || data[idx2].seq1 > seq2+1) &&
+	    (idx2 == count || (seq2 < (uint32_t)-1 && data[idx2].seq1 > seq2+1)) &&
 	    (idx1 == 0 || data[idx1-1].seq2 < seq1-1)) {
 		/* no overlapping */
 		value.seq1 = seq1;
--- a/src/lib/test-seq-range-array.c	Thu Dec 01 00:56:11 2016 +0200
+++ b/src/lib/test-seq-range-array.c	Thu Dec 01 02:26:08 2016 +0200
@@ -50,6 +50,11 @@
 	seq_range_array_add(&range, 1);
 	seq_range_array_add(&range, 2);
 	test_assert(array_count(&range) == 2);
+
+	seq_range_array_add_range(&range, 1, (uint32_t)-1);
+	test_assert(array_count(&range) == 1);
+	seq_range_array_add_range(&range, 1, (uint32_t)-1);
+	test_assert(array_count(&range) == 1);
 	test_end();
 }