]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
array_idx_clear() was broken when clearing an index outside the existing array.
authorTimo Sirainen <tss@iki.fi>
Mon, 20 Apr 2009 18:43:15 +0000 (14:43 -0400)
committerTimo Sirainen <tss@iki.fi>
Mon, 20 Apr 2009 18:43:15 +0000 (14:43 -0400)
--HG--
branch : HEAD

src/lib/array.c

index afa73b0d34c11dd3cb8a6eca327e660f18ea03d5..c324fada1d8a534a8b2dfd3008aa6a3c1cfd46a6 100644 (file)
@@ -35,7 +35,8 @@ void array_idx_clear_i(struct array *array, unsigned int idx)
        pos = idx * array->element_size;
        if (pos > array->buffer->used) {
                /* index doesn't exist yet, initialize with zero */
-               buffer_append_zero(array->buffer, pos - array->buffer->used);
+               buffer_append_zero(array->buffer, pos - array->buffer->used +
+                                  array->element_size);
        } else {
                buffer_write_zero(array->buffer, pos, array->element_size);
        }