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

Ian Romanick idr at freedesktop.org
Thu Apr 5 10:42:32 PDT 2012


On 04/02/2012 07:51 AM, Brian Paul wrote:
> 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.

I was going to suggest the same thing.  It's probably not worth 
re-spinning this patch, but I'm sure Vinson will find other similar 
cases in Mesa.


More information about the mesa-dev mailing list