gallium/vbuf: fix buffer reference bugs
authorBrian Paul <brianp@vmware.com>
Thu, 24 Aug 2017 16:40:28 +0000 (10:40 -0600)
committerBrian Paul <brianp@vmware.com>
Sat, 26 Aug 2017 02:26:52 +0000 (20:26 -0600)
commitd819b1fcec02be5e0cfc87b6246833a2a2d5f034
tree451c207d8fa99b9a4efadaed142bd8e17d4c43cd
parent42d62e61bc06ac4d51c75405769a66291728560e
gallium/vbuf: fix buffer reference bugs

In two places we called pipe_resource_reference() to remove a reference
to a vertex buffer resource.  But we neglected to check if the buffer was
a user buffer and not a pipe_resource.  This caused us to pass an invalid
pipe_resource pointer to pipe_resource_reference().

Instead of calling pipe_resource_reference(&vbuf->resource, NULL), use
pipe_vertex_buffer_unreference(&vbuf) which checks the is_user_buffer
field and does the right thing.

Also, explicity set the is_user_buffer field to false after setting the
vbuf->resource pointer to out_buffer.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102377
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Bruce Cherniak <bruce.cherniak@intel.com>
src/gallium/auxiliary/util/u_vbuf.c