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. */
#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
}
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();
+}