mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
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:
parent
c3f8531477
commit
49eba71844
@ -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
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user