]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: seq_range_array_add() - Reorder code flow
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 1 Oct 2020 08:19:33 +0000 (11:19 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 22 Oct 2020 10:23:02 +0000 (10:23 +0000)
src/lib/seq-range-array.c

index 598ddd9292b810e363a674e45f46e17d15158b71..e320b948d88c7cb97222e07a1cb27321709145dd 100644 (file)
@@ -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,