[Mesa-stable] [PATCH 1/4] swrast: allocate swrast_texture_image::ImageSlices array if needed

Brian Paul brianp at vmware.com
Wed Apr 23 09:01:48 PDT 2014


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 at lists.freedesktop.org>
---
 src/mesa/swrast/s_texture.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/mesa/swrast/s_texture.c b/src/mesa/swrast/s_texture.c
index c08a4e9..1d449a2 100644
--- a/src/mesa/swrast/s_texture.c
+++ b/src/mesa/swrast/s_texture.c
@@ -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);
-- 
1.7.10.4



More information about the mesa-stable mailing list