[PATCH vkd3d v3 3/5] vkd3d-shader: Move the bytecode buffer helpers to vkd3d_shader_main.c.
Henri Verbeet
hverbeet at gmail.com
Tue Jul 6 12:19:53 CDT 2021
On Mon, 5 Jul 2021 at 23:02, Zebediah Figura <zfigura at codeweavers.com> wrote:
> +void set_u32(struct vkd3d_bytecode_buffer *buffer, size_t offset, uint32_t value)
> +{
> + if (buffer->status)
> + return;
> +
> + assert(offset + sizeof(value) <= buffer->size);
> + memcpy(buffer->data + offset, &value, sizeof(value));
> +}
> +
In a sense it's fine because it's inside an assert() and only an
internal consistency check, but I'd still feel better about that
assertion if it was written in a way that's safe from overflows.
> +struct vkd3d_bytecode_buffer
> +{
> + char *data;
> + size_t size, capacity;
> + int status;
> +};
> +
We'd still want "uint8_t *data", I think.
> +static inline size_t put_u32(struct vkd3d_bytecode_buffer *buffer, uint32_t value)
> +{
> + return bytecode_put_bytes(buffer, &value, sizeof(value));
> +}
> +
> +static inline size_t put_float(struct vkd3d_bytecode_buffer *buffer, float value)
> +{
> + return bytecode_put_bytes(buffer, &value, sizeof(value));
> +}
> +
Arguably, if we're going to have put_u32(), we may as well have put_f32() too.
More information about the wine-devel
mailing list