From: Juha-Pekka Heikkila Date: Wed, 7 May 2014 13:20:12 +0000 (+0300) Subject: glsl: Check calloc return value in link_intrastage_shaders() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d2f0442bf632eef7dddcd77add8556f6be029b5e;p=mesa.git glsl: Check calloc return value in link_intrastage_shaders() Check calloc return value while adding build-in functions. Signed-off-by: Juha-Pekka Heikkila Reviewed-by: Anuj Phogat --- diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 7689198b066..75e8b1696c5 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -1714,12 +1714,19 @@ link_intrastage_shaders(void *mem_ctx, */ gl_shader **linking_shaders = (gl_shader **) calloc(num_shaders + 1, sizeof(gl_shader *)); - memcpy(linking_shaders, shader_list, num_shaders * sizeof(gl_shader *)); - linking_shaders[num_shaders] = _mesa_glsl_get_builtin_function_shader(); - ok = link_function_calls(prog, linked, linking_shaders, num_shaders + 1); + ok = linking_shaders != NULL; - free(linking_shaders); + if (ok) { + memcpy(linking_shaders, shader_list, num_shaders * sizeof(gl_shader *)); + linking_shaders[num_shaders] = _mesa_glsl_get_builtin_function_shader(); + + ok = link_function_calls(prog, linked, linking_shaders, num_shaders + 1); + + free(linking_shaders); + } else { + _mesa_error_no_memory(__func__); + } } else { ok = link_function_calls(prog, linked, shader_list, num_shaders); }