Mercurial > dovecot > core-2.2
changeset 21059:3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Mon, 16 May 2016 13:19:50 +0300 |
parents | 16a74bf21d94 |
children | 550a79f2a361 |
files | src/lib/buffer.h src/lib/test-buffer.c |
diffstat | 2 files changed, 27 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/buffer.h Thu Oct 27 16:19:52 2016 +0300 +++ b/src/lib/buffer.h Mon May 16 13:19:50 2016 +0300 @@ -86,7 +86,9 @@ ATTR_NULL(2); /* Set the "used size" of buffer, ie. 0 would set the buffer empty. - Must not be used to grow buffer. */ + Must not be used to grow buffer. The data after the buffer's new size will + be effectively lost, because e.g. buffer_get_space_unsafe() will zero out + the contents. */ void buffer_set_used_size(buffer_t *buf, size_t used_size); /* Returns the current buffer size. */
--- a/src/lib/test-buffer.c Thu Oct 27 16:19:52 2016 +0300 +++ b/src/lib/test-buffer.c Mon May 16 13:19:50 2016 +0300 @@ -3,8 +3,7 @@ #include "test-lib.h" #include "buffer.h" - -void test_buffer(void) +static void test_buffer_random(void) { #define BUF_TEST_SIZE (1024*2) #define BUF_TEST_COUNT 1000 @@ -131,3 +130,26 @@ } buffer_free(&buf); } + +static void test_buffer_set_used_size(void) +{ + buffer_t *buf; + + test_begin("buffer_set_used_size"); + buf = buffer_create_dynamic(pool_datastack_create(), 8); + memset(buffer_append_space_unsafe(buf, 7), 'a', 7); + buffer_set_used_size(buf, 4); + test_assert(memcmp(buffer_get_space_unsafe(buf, 0, 7), "aaaa\0\0\0", 7) == 0); + memset(buffer_get_space_unsafe(buf, 4, 7), 'b', 7); + buffer_set_used_size(buf, 10); + test_assert(memcmp(buffer_append_space_unsafe(buf, 1), "\0", 1) == 0); + buffer_set_used_size(buf, 11); + test_assert(memcmp(buffer_get_space_unsafe(buf, 0, 11), "aaaabbbbbb\0", 11) == 0); + test_end(); +} + +void test_buffer(void) +{ + test_buffer_random(); + test_buffer_set_used_size(); +}