Mercurial > dovecot > core-2.2
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(); }