summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2013-01-28 02:47:24 +0100
committerMarek Olšák <[email protected]>2013-01-28 02:51:52 +0100
commit87592cff57feef29565150b9203e220b50623f30 (patch)
treebdd2562a0812808efe25773e397184f9d73b03f3
parente058f2ac97eebbe86fc77ef607ce1cfdcab2cc19 (diff)
gallium/u_upload_mgr: fix a serious memory leak
It can eat all memory and crash in a matter of minutes with r600g.
-rw-r--r--src/gallium/auxiliary/util/u_upload_mgr.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/util/u_upload_mgr.c b/src/gallium/auxiliary/util/u_upload_mgr.c
index 47d39af67aa..6859751c591 100644
--- a/src/gallium/auxiliary/util/u_upload_mgr.c
+++ b/src/gallium/auxiliary/util/u_upload_mgr.c
@@ -167,7 +167,7 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
* sure the caller doesn't get garbage values.
*/
*out_offset = ~0;
- *outbuf = NULL;
+ pipe_resource_reference(outbuf, NULL);
*ptr = NULL;
/* Make sure we have enough space in the upload buffer
@@ -189,7 +189,6 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
PIPE_TRANSFER_UNSYNCHRONIZED,
&upload->transfer);
if (!upload->map) {
- pipe_resource_reference(outbuf, NULL);
upload->transfer = NULL;
return PIPE_ERROR_OUT_OF_MEMORY;
}