From: Timo Sirainen Date: Sat, 19 Nov 2016 00:32:21 +0000 (+0200) Subject: lib: Clarify that buffer_write() zero-fills buffer when writing past its size X-Git-Tag: 2.3.0.rc1~2525 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a44866b012a59906a592a8847ca43230c020fe2b;p=thirdparty%2Fdovecot%2Fcore.git lib: Clarify that buffer_write() zero-fills buffer when writing past its size --- diff --git a/src/lib/buffer.h b/src/lib/buffer.h index 1d38d1efbe..bf9ddc5ff4 100644 --- a/src/lib/buffer.h +++ b/src/lib/buffer.h @@ -39,7 +39,8 @@ void *buffer_free_without_data(buffer_t **buf); /* Returns the pool buffer was created with. */ pool_t buffer_get_pool(const buffer_t *buf) ATTR_PURE; -/* Write data to buffer at specified position. */ +/* Write data to buffer at specified position. If pos is beyond the buffer's + current size, it is zero-filled up to that point (even if data_size==0). */ void buffer_write(buffer_t *buf, size_t pos, const void *data, size_t data_size); /* Append data to buffer. */ diff --git a/src/lib/test-buffer.c b/src/lib/test-buffer.c index 2afdce6f5a..ad39e76aad 100644 --- a/src/lib/test-buffer.c +++ b/src/lib/test-buffer.c @@ -131,6 +131,17 @@ static void test_buffer_random(void) buffer_free(&buf); } +static void test_buffer_write(void) +{ + buffer_t *buf; + + test_begin("buffer_write"); + buf = buffer_create_dynamic(pool_datastack_create(), 8); + buffer_write(buf, 5, buf, 0); + test_assert(buf->used == 5); + test_end(); +} + static void test_buffer_set_used_size(void) { buffer_t *buf; @@ -263,6 +274,7 @@ static void test_buffer_truncate_bits(void) void test_buffer(void) { test_buffer_random(); + test_buffer_write(); test_buffer_set_used_size(); test_buffer_truncate_bits(); }