]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Updated buffer_set_used_size() comment and added unit test.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 16 May 2016 10:19:50 +0000 (13:19 +0300)
committerGitLab <gitlab@git.dovecot.net>
Wed, 18 May 2016 12:23:08 +0000 (15:23 +0300)
src/lib/buffer.h
src/lib/test-buffer.c

index f924a930455b086c5bc6f7604710aac38dcfe1fd..270dc2e64269957c228cc0dd5d60f78a37713446 100644 (file)
@@ -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. */
index c5c53850f3a1132d4eec36b568c378d98a65faa4..300d3ca690f820867b6019c98a8c0f360f530d7d 100644 (file)
@@ -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();
+}