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:
Brian Paul 2014-04-23 09:49:58 -06:00
parent 15c92464df
commit 7cc2e2e99d

View file

@ -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);