summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/shaderobj.c
diff options
context:
space:
mode:
authorCarl Worth <[email protected]>2014-02-13 09:49:27 -0800
committerCarl Worth <[email protected]>2014-02-14 11:45:48 -0800
commita92581acf2aba5e5e9fa199b778e649d5741754d (patch)
treeb3c3716e14e12dca4b93c50eab9379d1234c3667 /src/mesa/main/shaderobj.c
parente4a5a9fd2fdd5b5ae8b85ac743a228f409a21a70 (diff)
main: Avoid double-free of shader Label
As documented, the _mesa_free_shader_program_data function: "Frees all the data that hangs off a shader program object, but not the object itself." This means that this function may be called multiple times on the same object, (and has been observed to). Meanwhile, the shProg->Label field was not being set to NULL after its free(). This led to a second call to free() of the same address on the second call to this function. Fix this by setting this field to NULL after free(), (just as with all other calls to free() in this function). Reviewed-by: Brian Paul <[email protected]> CC: [email protected]
Diffstat (limited to 'src/mesa/main/shaderobj.c')
-rw-r--r--src/mesa/main/shaderobj.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c
index 4f4bb69a872..d5c3d8099a7 100644
--- a/src/mesa/main/shaderobj.c
+++ b/src/mesa/main/shaderobj.c
@@ -355,6 +355,7 @@ _mesa_free_shader_program_data(struct gl_context *ctx,
}
free(shProg->Label);
+ shProg->Label = NULL;
}