Mesa (master): mesa: Don't check for image->Data when freeing an image' s contents.

Eric Anholt anholt at kemper.freedesktop.org
Mon Aug 29 10:22:33 PDT 2011


Module: Mesa
Branch: master
Commit: 68f8cf72638e974a5bf2ae3e88c2e3539d88e2b6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=68f8cf72638e974a5bf2ae3e88c2e3539d88e2b6

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Jul 27 14:40:08 2011 -0700

mesa: Don't check for image->Data when freeing an image's contents.

All driver implementations of FreeTextureImageBuffer already check
that Data != NULL and free it.  However, this means that we will also
free driver storage if the driver storage wasn't in the form of a Data
pointer.

This was produced by the following semantic patch:

@@
expression C;
expression T;
@@
- if (T->Data) {
- C->Driver.FreeTextureImageBuffer(C, T);
+ C->Driver.FreeTextureImageBuffer(C, T);
- }

Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/mesa/main/mipmap.c                 |    3 +--
 src/mesa/main/teximage.c               |   11 +++--------
 src/mesa/state_tracker/st_gen_mipmap.c |    3 +--
 3 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c
index 611f375..cf9d522 100644
--- a/src/mesa/main/mipmap.c
+++ b/src/mesa/main/mipmap.c
@@ -1948,8 +1948,7 @@ generate_mipmap_uncompressed(struct gl_context *ctx, GLenum target,
       }
 
       /* Free old image data */
-      if (dstImage->Data)
-         ctx->Driver.FreeTextureImageBuffer(ctx, dstImage);
+      ctx->Driver.FreeTextureImageBuffer(ctx, dstImage);
 
       /* initialize new image */
       _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight,
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 8fdebad..886e521 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -2456,9 +2456,7 @@ teximage(struct gl_context *ctx, GLuint dims,
          else {
             gl_format texFormat;
 
-            if (texImage->Data) {
-               ctx->Driver.FreeTextureImageBuffer( ctx, texImage );
-            }
+            ctx->Driver.FreeTextureImageBuffer(ctx, texImage);
 
             ASSERT(texImage->Data == NULL);
             texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
@@ -2597,8 +2595,7 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
    if (!texImage) {
       _mesa_error(ctx, GL_OUT_OF_MEMORY, "glEGLImageTargetTexture2D");
    } else {
-      if (texImage->Data)
-	 ctx->Driver.FreeTextureImageBuffer( ctx, texImage );
+      ctx->Driver.FreeTextureImageBuffer(ctx, texImage);
 
       ASSERT(texImage->Data == NULL);
       ctx->Driver.EGLImageTargetTexture2D(ctx, target,
@@ -3362,9 +3359,7 @@ compressedteximage(struct gl_context *ctx, GLuint dims,
          else {
             gl_format texFormat;
 
-            if (texImage->Data) {
-               ctx->Driver.FreeTextureImageBuffer( ctx, texImage );
-            }
+            ctx->Driver.FreeTextureImageBuffer(ctx, texImage);
             ASSERT(texImage->Data == NULL);
 
             texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
index c991da3..e53da5f 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -444,8 +444,7 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
       }
 
       /* Free old image data */
-      if (dstImage->Data)
-         ctx->Driver.FreeTextureImageBuffer(ctx, dstImage);
+      ctx->Driver.FreeTextureImageBuffer(ctx, dstImage);
 
       /* initialize new image */
       _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight,



More information about the mesa-commit mailing list