[Mesa-dev] [PATCH] swrast: Fix memory leaks in blit_linear.

Brian Paul brianp at vmware.com
Mon Apr 2 07:51:22 PDT 2012


On 04/01/2012 12:17 AM, Vinson Lee wrote:
> Fixes Coverity resource leak defects.
>
> NOTE: This is a candidate for the 8.0 branch.
>
> Signed-off-by: Vinson Lee<vlee at freedesktop.org>
> ---
>   src/mesa/swrast/s_blit.c |    9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/src/mesa/swrast/s_blit.c b/src/mesa/swrast/s_blit.c
> index 6d0b889..b0c56a4 100644
> --- a/src/mesa/swrast/s_blit.c
> +++ b/src/mesa/swrast/s_blit.c
> @@ -566,6 +566,9 @@ blit_linear(struct gl_context *ctx,
>                                     GL_MAP_READ_BIT | GL_MAP_WRITE_BIT,
>                                     &srcMap,&srcRowStride);
>         if (!srcMap) {
> +         free(srcBuffer0);
> +         free(srcBuffer1);
> +         free(dstBuffer);
>            _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBlitFramebuffer");
>            return;
>         }
> @@ -582,6 +585,9 @@ blit_linear(struct gl_context *ctx,
>   				  0, 0, readRb->Width, readRb->Height,
>                                     GL_MAP_READ_BIT,&srcMap,&srcRowStride);
>         if (!srcMap) {
> +         free(srcBuffer0);
> +         free(srcBuffer1);
> +         free(dstBuffer);
>            _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBlitFramebuffer");
>            return;
>         }
> @@ -590,6 +596,9 @@ blit_linear(struct gl_context *ctx,
>                                     GL_MAP_WRITE_BIT,&dstMap,&dstRowStride);
>         if (!dstMap) {
>            ctx->Driver.UnmapRenderbuffer(ctx, readRb);
> +         free(srcBuffer0);
> +         free(srcBuffer1);
> +         free(dstBuffer);
>            _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBlitFramebuffer");
>            return;
>         }

This look OK, so Reviewed-by: Brian Paul <brianp at vmware.com>

But another way to consolidate all these OOM cases would be a "goto 
oom" block at the end of the function.  No big deal.

-Brian


More information about the mesa-dev mailing list