diff options
author | Karol Herbst <[email protected]> | 2020-04-16 16:01:47 +0200 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-04-17 11:50:21 +0000 |
commit | 8c949b2aa6e0c27e92a05a57eda11672c2bdb157 (patch) | |
tree | 71e914fd97c1c6f70cd2789de6512b78662a9d1b /src | |
parent | 8521acd660764973940fbdc2c85334670d620b45 (diff) |
st/mesa: properly guard fallback_copy_texsubimage aginst failed maps
Fixes random crashes in some packed_pixel GLES CTS tests
Signed-off-by: Karol Herbst <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4592>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/state_tracker/st_cb_texture.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 0432e3fccdf..5742fb591ca 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -2312,6 +2312,10 @@ fallback_copy_texsubimage(struct gl_context *ctx, PIPE_TRANSFER_READ, srcX, srcY, width, height, &src_trans); + if (!map) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage()"); + return; + } if ((baseFormat == GL_DEPTH_COMPONENT || baseFormat == GL_DEPTH_STENCIL) && @@ -2324,6 +2328,10 @@ fallback_copy_texsubimage(struct gl_context *ctx, destX, destY, slice, dst_width, dst_height, dst_depth, &transfer); + if (!texDest) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage()"); + goto err; + } if (baseFormat == GL_DEPTH_COMPONENT || baseFormat == GL_DEPTH_STENCIL) { @@ -2371,7 +2379,7 @@ fallback_copy_texsubimage(struct gl_context *ctx, GLfloat *tempSrc = malloc(width * height * 4 * sizeof(GLfloat)); - if (tempSrc && texDest) { + if (tempSrc) { const GLint dims = 2; GLint dstRowStride; struct gl_texture_image *texImage = &stImage->base; @@ -2419,6 +2427,7 @@ fallback_copy_texsubimage(struct gl_context *ctx, } st_texture_image_unmap(st, stImage, slice); +err: pipe->transfer_unmap(pipe, src_trans); } |