mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
swrast: allocate swrast_texture_image::ImageSlices array if needed
Fixes a segmentation fault in conform divzero.c test. This happens when glTexImage(level, width=0, height=0) is called. We don't allocate texture memory in that case so the ImageSlices array was never allocated. Cc: "10.1" <mesa-stable@lists.freedesktop.org> Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
15c92464df
commit
7cc2e2e99d
1 changed files with 10 additions and 0 deletions
|
|
@ -279,6 +279,13 @@ _swrast_map_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (!swImage->ImageSlices) {
|
||||
swImage->ImageSlices =
|
||||
calloc(texture_slices(texImage), sizeof(void *));
|
||||
if (!swImage->ImageSlices)
|
||||
continue;
|
||||
}
|
||||
|
||||
for (i = 0; i < texture_slices(texImage); i++) {
|
||||
GLubyte *map;
|
||||
GLint rowStride;
|
||||
|
|
@ -325,6 +332,9 @@ _swrast_unmap_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
|
|||
if (swImage->Buffer)
|
||||
return;
|
||||
|
||||
if (!swImage->ImageSlices)
|
||||
continue;
|
||||
|
||||
for (i = 0; i < texture_slices(texImage); i++) {
|
||||
if (swImage->ImageSlices[i]) {
|
||||
ctx->Driver.UnmapTextureImage(ctx, texImage, i);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue