diff options
-rw-r--r-- | src/gallium/auxiliary/util/u_upload_mgr.c | 9 |
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; } |