gallium/util: make pipe_vertex_buffer_reference safe for hashing dst

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13050>
This commit is contained in:
Marek Olšák 2021-08-20 20:49:34 -04:00 committed by Marge Bot
parent 6e69acad82
commit d5218f0889

View file

@ -252,9 +252,17 @@ pipe_vertex_buffer_reference(struct pipe_vertex_buffer *dst,
}
pipe_vertex_buffer_unreference(dst);
if (!src->is_user_buffer)
/* Don't use memcpy because there is a hole between variables.
* dst can be used as a hash key.
*/
dst->stride = src->stride;
dst->is_user_buffer = src->is_user_buffer;
dst->buffer_offset = src->buffer_offset;
if (src->is_user_buffer)
dst->buffer.user = src->buffer.user;
else
pipe_resource_reference(&dst->buffer.resource, src->buffer.resource);
memcpy(dst, src, sizeof(*src));
}
static inline void