From: Timo Sirainen Date: Thu, 1 Oct 2020 08:19:33 +0000 (+0300) Subject: lib: seq_range_array_add() - Reorder code flow X-Git-Tag: 2.3.13~92 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=588c3b9637eba1e4813a51a9e768fb0b9ebaba6c;p=thirdparty%2Fdovecot%2Fcore.git lib: seq_range_array_add() - Reorder code flow --- diff --git a/src/lib/seq-range-array.c b/src/lib/seq-range-array.c index 598ddd9292..e320b948d8 100644 --- a/src/lib/seq-range-array.c +++ b/src/lib/seq-range-array.c @@ -82,36 +82,32 @@ bool seq_range_array_add(ARRAY_TYPE(seq_range) *array, uint32_t seq) { struct seq_range *data, value; unsigned int count; + bool exists = FALSE; value.seq1 = value.seq2 = seq; data = array_get_modifiable(array, &count); - if (count == 0) { - array_push_back(array, &value); - return FALSE; - } - /* quick checks */ - if (data[count-1].seq2 < seq) { + if (count == 0) + array_push_back(array, &value); + else if (data[count-1].seq2 < seq) { if (data[count-1].seq2 == seq-1) { /* grow last range */ data[count-1].seq2 = seq; } else { array_push_back(array, &value); } - return FALSE; - } - if (data[0].seq1 > seq) { + } else if (data[0].seq1 > seq) { if (data[0].seq1-1 == seq) { /* grow down first range */ data[0].seq1 = seq; } else { array_push_front(array, &value); } - return FALSE; + } else { + exists = seq_range_array_add_slow_path(array, seq); } - - return seq_range_array_add_slow_path(array, seq); + return exists; } void seq_range_array_add_with_init(ARRAY_TYPE(seq_range) *array,