]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Sat, 19 Nov 2016 00:32:21 +0000 (02:32 +0200)
committerGitLab <gitlab@git.dovecot.net>
Thu, 24 Nov 2016 21:27:16 +0000 (23:27 +0200)
src/lib/buffer.h
src/lib/test-buffer.c

index 1d38d1efbec10f904b341a1d2ebb4c9abf21c811..bf9ddc5ff4ed7247e50e6e8181f8d28cc9a249f3 100644 (file)
@@ -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. */
index 2afdce6f5ad08fcab7864ff6551ddae7577ba7fe..ad39e76aad8fc50b5cc38bb76d38b5915e0aacc2 100644 (file)
@@ -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();
 }