mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07: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)
|
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)
|
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)
|
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))
|
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;
|
va_list a;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (!buffer->content_size && !vkd3d_string_buffer_resize(buffer, 32))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
rem = buffer->buffer_size - buffer->content_size;
|
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))))
|
if (!(buffer = vkd3d_malloc(sizeof(*buffer))))
|
||||||
return NULL;
|
return NULL;
|
||||||
vkd3d_string_buffer_init(buffer);
|
vkd3d_string_buffer_init(buffer);
|
||||||
if (!vkd3d_string_buffer_resize(buffer, 1))
|
|
||||||
{
|
|
||||||
vkd3d_free(buffer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user