Avoid a segfault in shader compilation

If a shader reaches an out-of-memory condition while adding
a new function (reallocating the function list), a segfault
will occur during cleanup (because the num_functions field
is non-zero, but the functions pointer is NULL).

This fixes that segfault by zeroing out the num_functions
field if reallocation fails.
This commit is contained in:
Robert Ellison 2009-04-27 12:08:34 -06:00
parent 76b9da9e98
commit 359a58230e

View file

@ -2161,6 +2161,12 @@ parse_function(slang_parse_ctx * C, slang_output_ctx * O, int definition,
(O->funs->num_functions + 1)
* sizeof(slang_function));
if (O->funs->functions == NULL) {
/* Make sure that there are no functions marked, as the
* allocation is currently NULL, in order to avoid
* a potental segfault as we clean up later.
*/
O->funs->num_functions = 0;
slang_info_log_memory(C->L);
slang_function_destruct(&parsed_func);
return GL_FALSE;