Fix to a sneaky memory leak.
* `hlsl_get_string_buffer()`/`vkd3d_string_buffer_get()` should go with `hlsl_release_string_buffer()`/`vkd3d_string_buffer_release()`. * `vkd3d_string_buffer_init()` should go with `vkd3d_string_buffer_free()`, which only frees the internal `char *` of the string buffer.
From: Francisco Casas fcasas@codeweavers.com
vkd3d_string_buffer_cleanup() doesn't do the same as hlsl_release_string_buffer(). The former only frees the char array inside the string buffer and not the string buffer itself. --- libs/vkd3d-shader/hlsl.y | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y index e02e0c540..7c2f83028 100644 --- a/libs/vkd3d-shader/hlsl.y +++ b/libs/vkd3d-shader/hlsl.y @@ -2870,20 +2870,20 @@ static bool write_atan_or_atan2(struct hlsl_ctx *ctx, type->name, type->name, type->name); if (ret < 0) { - vkd3d_string_buffer_cleanup(buf); + hlsl_release_string_buffer(ctx, buf); return false; }
ret = vkd3d_string_buffer_printf(buf, body_template, type->name); if (ret < 0) { - vkd3d_string_buffer_cleanup(buf); + hlsl_release_string_buffer(ctx, buf); return false; }
func = hlsl_compile_internal_function(ctx, atan2_mode ? atan2_name : atan_name, buf->buffer); - vkd3d_string_buffer_cleanup(buf); + hlsl_release_string_buffer(ctx, buf); if (!func) return false;
This merge request was approved by Giovanni Mascellani.
This merge request was approved by Zebediah Figura.
This merge request was approved by Henri Verbeet.