vkd3d-shader: Allocate memory for a string buffer at init time.

Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Matteo Bruni 2021-09-30 21:36:17 +02:00 committed by Alexandre Julliard
parent c3f8531477
commit 49eba71844

View File

@ -25,7 +25,11 @@ VKD3D_DEBUG_ENV_NAME("VKD3D_SHADER_DEBUG");
void vkd3d_string_buffer_init(struct vkd3d_string_buffer *buffer)
{
memset(buffer, 0, sizeof(*buffer));
buffer->buffer_size = 16;
buffer->content_size = 0;
buffer->buffer = vkd3d_malloc(buffer->buffer_size);
assert(buffer->buffer);
memset(buffer->buffer, 0, buffer->buffer_size);
}
void vkd3d_string_buffer_cleanup(struct vkd3d_string_buffer *buffer)
@ -41,7 +45,7 @@ static void vkd3d_string_buffer_clear(struct vkd3d_string_buffer *buffer)
static bool vkd3d_string_buffer_resize(struct vkd3d_string_buffer *buffer, int rc)
{
unsigned int new_buffer_size = rc >= 0 ? buffer->content_size + rc + 1 : max(buffer->buffer_size * 2, 32);
unsigned int new_buffer_size = rc >= 0 ? buffer->content_size + rc + 1 : buffer->buffer_size * 2;
if (!vkd3d_array_reserve((void **)&buffer->buffer, &buffer->buffer_size, new_buffer_size, 1))
{
@ -58,9 +62,6 @@ int vkd3d_string_buffer_vprintf(struct vkd3d_string_buffer *buffer, const char *
va_list a;
int rc;
if (!buffer->content_size && !vkd3d_string_buffer_resize(buffer, 32))
return -1;
for (;;)
{
rem = buffer->buffer_size - buffer->content_size;
@ -144,11 +145,6 @@ struct vkd3d_string_buffer *vkd3d_string_buffer_get(struct vkd3d_string_buffer_c
if (!(buffer = vkd3d_malloc(sizeof(*buffer))))
return NULL;
vkd3d_string_buffer_init(buffer);
if (!vkd3d_string_buffer_resize(buffer, 1))
{
vkd3d_free(buffer);
return NULL;
}
}
else
{