]> 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)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 25 Nov 2016 13:29:20 +0000 (15:29 +0200)
src/lib/buffer.h
src/lib/test-buffer.c

index 57a3a201a5d34efe8b7decd3bb1191dbc061a4b7..786716b03efbbc89bb669c2177091cba8cd218b8 100644 (file)
@@ -42,7 +42,8 @@ pool_t buffer_get_pool(const buffer_t *buf) ATTR_PURE;
 /* Reset the buffer. used size and it's contents are zeroed. */
 void buffer_reset(buffer_t *buf);
 
-/* 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();
 }