summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/util/u_upload_mgr.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/util/u_upload_mgr.c b/src/gallium/auxiliary/util/u_upload_mgr.c
index b4b4c91f1e..21d4bca4b9 100644
--- a/src/gallium/auxiliary/util/u_upload_mgr.c
+++ b/src/gallium/auxiliary/util/u_upload_mgr.c
@@ -164,6 +164,13 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
unsigned alloc_offset = align(min_out_offset, upload->alignment);
unsigned offset;
+ /* Init these return values here in case we fail below to make
+ * sure the caller doesn't get garbage values.
+ */
+ *out_offset = ~0;
+ *outbuf = NULL;
+ *ptr = NULL;
+
/* Make sure we have enough space in the upload buffer
* for the sub-allocation. */
if (MAX2(upload->offset, alloc_offset) + alloc_size > upload->size) {
@@ -184,7 +191,7 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
&upload->transfer);
if (!upload->map) {
pipe_resource_reference(outbuf, NULL);
- *ptr = NULL;
+ upload->transfer = NULL;
return PIPE_ERROR_OUT_OF_MEMORY;
}