Mesa (master): main: unreference ATIFragmentShader program before creating new one

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jul 26 13:00:49 UTC 2019


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

Author: Yevhenii Kolesnikov <yevhenii.kolesnikov at globallogic.com>
Date:   Thu Jul 25 18:15:24 2019 +0300

main: unreference ATIFragmentShader program before creating new one

Old program was overwritten without release of memory.

Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov at globallogic.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

---

 src/mesa/main/atifragshader.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/atifragshader.c b/src/mesa/main/atifragshader.c
index a9356ae95b1..71c8ce5efdf 100644
--- a/src/mesa/main/atifragshader.c
+++ b/src/mesa/main/atifragshader.c
@@ -411,7 +411,10 @@ _mesa_EndFragmentShaderATI(void)
    if (ctx->Driver.NewATIfs) {
       struct gl_program *prog = ctx->Driver.NewATIfs(ctx,
                                                      ctx->ATIFragmentShader.Current);
-      _mesa_reference_program(ctx, &ctx->ATIFragmentShader.Current->Program, prog);
+      _mesa_reference_program(ctx, &ctx->ATIFragmentShader.Current->Program,
+                                   NULL);
+      /* Don't use _mesa_reference_program(), just take ownership */
+      ctx->ATIFragmentShader.Current->Program = prog;
    }
 
    if (!ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_SHADER_ATI,




More information about the mesa-commit mailing list