From: Timothy Arceri Date: Thu, 6 Apr 2017 21:55:17 +0000 (+1000) Subject: mesa: fix renderbuffer leak X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8046a944d084b4ae4e70e61ba50846fd1943247f;p=mesa.git mesa: fix renderbuffer leak We don't need to call _mesa_reference_renderbuffer() for the first assignment as refCount starts at 1. For swrast we work around the fact we will indirectly call _mesa_reference_renderbuffer() by resetting refCount to 0. Fixes: 32141e53d1520 (mesa: tidy up renderbuffer RefCount initialisation) Reviewed-by: Samuel Iglesias Gonsálvez --- diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 3289f86803c..d486d01195f 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -451,7 +451,7 @@ _mesa_update_texture_renderbuffer(struct gl_context *ctx, _mesa_error(ctx, GL_OUT_OF_MEMORY, "glFramebufferTexture()"); return; } - _mesa_reference_renderbuffer(&att->Renderbuffer, rb); + att->Renderbuffer = rb; /* This can't get called on a texture renderbuffer, so set it to NULL * for clarity compared to user renderbuffers. diff --git a/src/mesa/swrast/s_renderbuffer.c b/src/mesa/swrast/s_renderbuffer.c index d8c4ed38638..af09955484e 100644 --- a/src/mesa/swrast/s_renderbuffer.c +++ b/src/mesa/swrast/s_renderbuffer.c @@ -271,6 +271,11 @@ add_color_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, return GL_FALSE; } + /* Set refcount to 0 to avoid a leak since the _mesa_add_renderbuffer() + * call below will bump the initial refcount. + */ + rb->RefCount = 0; + rb->InternalFormat = GL_RGBA; rb->AllocStorage = soft_renderbuffer_storage;