diff options
author | José Fonseca <jfonseca@vmware.com> | 2011-02-03 16:14:02 +0000 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2011-02-03 16:14:02 +0000 |
commit | 610c24b19d21f3d147fde4d96a3afaa107670f1e (patch) | |
tree | 8bd8e494080e495256b6cad0f0240d4c8c8819e6 /src/gallium/drivers/svga/svga_resource_buffer_upload.c | |
parent | 0f3eeb45c73e77b791a047d7bd1ba0c18accb116 (diff) |
svga: Fix resource leak; undo temporary workaround.
Leak was introduced when fixing strict aliasing violation in this code:
the reference counting was preserved, but the destructor call on zero
reference count was not.
Diffstat (limited to 'src/gallium/drivers/svga/svga_resource_buffer_upload.c')
-rw-r--r-- | src/gallium/drivers/svga/svga_resource_buffer_upload.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c index 3de5216a94..765d2f3408 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer_upload.c +++ b/src/gallium/drivers/svga/svga_resource_buffer_upload.c @@ -248,6 +248,7 @@ svga_buffer_upload_flush(struct svga_context *svga, { SVGA3dCopyBox *boxes; unsigned i; + struct pipe_resource *dummy; assert(sbuf->handle); assert(sbuf->hwbuf); @@ -289,9 +290,9 @@ svga_buffer_upload_flush(struct svga_context *svga, sbuf->dma.svga = NULL; sbuf->dma.boxes = NULL; - /* Decrement reference count */ - pipe_reference(&(sbuf->b.b.reference), NULL); - sbuf = NULL; + /* Decrement reference count (and potentially destroy) */ + dummy = &sbuf->b.b; + pipe_resource_reference(&dummy, NULL); } |