From 94a6b3df81d2edb93460b7beca6d37e618a48262 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 16 May 2016 13:19:50 +0300 Subject: [PATCH] lib: Updated buffer_set_used_size() comment and added unit test. --- src/lib/buffer.h | 4 +++- src/lib/test-buffer.c | 26 ++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/lib/buffer.h b/src/lib/buffer.h index f924a93045..270dc2e642 100644 --- a/src/lib/buffer.h +++ b/src/lib/buffer.h @@ -86,7 +86,9 @@ void *buffer_get_modifiable_data(const buffer_t *buf, size_t *used_size_r) 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. */ diff --git a/src/lib/test-buffer.c b/src/lib/test-buffer.c index c5c53850f3..300d3ca690 100644 --- a/src/lib/test-buffer.c +++ b/src/lib/test-buffer.c @@ -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 @@ void test_buffer(void) } 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(); +}