mesa: fix memory leak when generating mipmaps for compressed textures
This commit is contained in:
+10
-6
@@ -1510,7 +1510,9 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
||||
|
||||
/* Find convertFormat - the format that do_row() will process */
|
||||
if (srcImage->IsCompressed) {
|
||||
/* setup for compressed textures */
|
||||
/* setup for compressed textures - need to allocate temporary
|
||||
* image buffers to hold uncompressed images.
|
||||
*/
|
||||
GLuint row;
|
||||
GLint components, size;
|
||||
GLchan *dst;
|
||||
@@ -1587,11 +1589,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
||||
&dstWidth, &dstHeight, &dstDepth);
|
||||
if (!nextLevel) {
|
||||
/* all done */
|
||||
if (srcImage->IsCompressed) {
|
||||
_mesa_free((void *) srcData);
|
||||
_mesa_free(dstData);
|
||||
}
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
/* get dest gl_texture_image */
|
||||
@@ -1682,6 +1680,12 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
||||
}
|
||||
|
||||
} /* loop over mipmap levels */
|
||||
|
||||
if (srcImage->IsCompressed) {
|
||||
/* free uncompressed image buffers */
|
||||
_mesa_free((void *) srcData);
|
||||
_mesa_free(dstData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user