Mesa (master): glsl/standalone: Fix memory leaks

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Dec 15 19:56:27 UTC 2020


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

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Dec  4 15:17:51 2020 -0800

glsl/standalone: Fix memory leaks

Needed for meson test with asan enabled.

Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7936>

---

 src/compiler/glsl/standalone.cpp             | 5 +++--
 src/compiler/glsl/standalone_scaffolding.cpp | 1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/compiler/glsl/standalone.cpp b/src/compiler/glsl/standalone.cpp
index ca187001186..653f3801e2b 100644
--- a/src/compiler/glsl/standalone.cpp
+++ b/src/compiler/glsl/standalone.cpp
@@ -599,7 +599,7 @@ standalone_compile_shader(const struct standalone_options *_options,
 fail:
    for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
       if (whole_program->_LinkedShaders[i])
-         ralloc_free(whole_program->_LinkedShaders[i]->Program);
+         _mesa_delete_linked_shader(ctx, whole_program->_LinkedShaders[i]);
    }
 
    ralloc_free(whole_program);
@@ -611,12 +611,13 @@ standalone_compiler_cleanup(struct gl_shader_program *whole_program)
 {
    for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
       if (whole_program->_LinkedShaders[i])
-         ralloc_free(whole_program->_LinkedShaders[i]->Program);
+         _mesa_delete_linked_shader(NULL, whole_program->_LinkedShaders[i]);
    }
 
    delete whole_program->AttributeBindings;
    delete whole_program->FragDataBindings;
    delete whole_program->FragDataIndexBindings;
+   delete whole_program->UniformHash;
 
    ralloc_free(whole_program);
    _mesa_glsl_builtin_functions_decref();
diff --git a/src/compiler/glsl/standalone_scaffolding.cpp b/src/compiler/glsl/standalone_scaffolding.cpp
index 5d2ede26852..c5c69e8d161 100644
--- a/src/compiler/glsl/standalone_scaffolding.cpp
+++ b/src/compiler/glsl/standalone_scaffolding.cpp
@@ -142,6 +142,7 @@ void
 _mesa_delete_linked_shader(struct gl_context *,
                            struct gl_linked_shader *sh)
 {
+   ralloc_free(sh->Program);
    ralloc_free(sh);
 }
 



More information about the mesa-commit mailing list