[PATCH vkd3d] vkd3d-shader: Allow a NULL buffer in vkd3d_string_buffer.
Giovanni Mascellani
gmascellani at codeweavers.com
Wed Oct 6 07:48:30 CDT 2021
Hi,
Il 05/10/21 18:21, Zebediah Figura (she/her) ha scritto:
> Well, in the sense that 216057 (well, 216055 really) is mainly just
> there to get rid of the boilerplate around calling
> hlsl_type_to_string(). This patch does lesson that boilerplate a bit.
Mmh, I am not sure I understand why that would lessen the boilerplate.
You still need to name and destroy the string buffer, each of which
takes a line. And vkd3d_string_buffer_data(string) is definitely longer
than string->buffer. I don't really think this helps here.
>>>> @@ -855,7 +856,7 @@ struct vkd3d_string_buffer
>>>> *hlsl_type_to_string(struct hlsl_ctx *ctx, const stru
>>>> if ((inner_string = hlsl_type_to_string(ctx, t)))
>>>> {
>>>> - vkd3d_string_buffer_printf(string, "%s",
>>>> inner_string->buffer);
>>>> + vkd3d_string_buffer_printf(string, "%s",
>>>> vkd3d_string_buffer_data(inner_string));
>>>> hlsl_release_string_buffer(ctx, inner_string);
>>>> }
>>>
>>> This means that here, and everywhere else, you can get rid of the
>>> NULL check.
>>
>> I'm pretty sure that in many cases vkd3d_string_buffer_data could be
>> avoided, when it can be shown that the buffer cannot be NULL. Though
>> ideally I'd like to encapsulate as much as possible the fact that the
>> buffer can be NULL inside the accessor vkd3d_string_buffer_data, so I
>> am using the accessor nearly everywhere (a couple of places were
>> actually using knowledge of the internals of vkd3d_string_buffer, and
>> I didn't change that, because after all we're writing C and nobody
>> really expects full encapsulation).
>
> I guess you're looking at this with the perspective that it's just there
> to avoid asserting the result of an allocation. That's fine, but I think
> that it's useful to avoid checking the result of one as well. Sort of
> like put_u32() and friends.
Sorry, I don't think I'm following you.
Giovanni.
More information about the wine-devel
mailing list