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