goto end;
}
- if ((buffer->capacity - buffer->size) < len) {
+ assert(buffer->capacity >= buffer->size);
+ if (buffer->capacity < (len + buffer->size)) {
ret = lttng_dynamic_buffer_set_capacity(buffer,
buffer->capacity +
(len - (buffer->capacity - buffer->size)));
}
if (new_size > buffer->capacity) {
+ size_t original_size = buffer->size;
+ size_t original_capacity = buffer->capacity;
+
ret = lttng_dynamic_buffer_set_capacity(buffer, new_size);
if (ret) {
goto end;
}
+
+ /*
+ * Zero-initialize the space that was left in the buffer at the
+ * before we increased its capacity (original capacity - original size).
+ * The newly acquired capacity (new capacity - original capacity)
+ * is zeroed by lttng_dynamic_buffer_set_capacity().
+ */
+ memset(buffer->data + original_size, 0,
+ original_capacity - original_size);
} else if (new_size > buffer->size) {
memset(buffer->data + buffer->size, 0, new_size - buffer->size);
} else {