On Mon, 5 Jul 2021 at 23:02, Zebediah Figura <zfigura(a)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.