glsl: Avoid variable length arrays.
They are a non-standard GCC extension that's not widely supported by other C/C++ compilers. Use a dynamic array instead. Trivial. Should fix the MSVC build.
This commit is contained in:
parent
1b0d6aef03
commit
649ef4da30
|
@ -175,13 +175,21 @@ bool glsl_symbol_table::add_type(const char *name, const glsl_type *t)
|
|||
return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0;
|
||||
}
|
||||
|
||||
static char *make_ast_name(const char *name)
|
||||
{
|
||||
char *ast_name = new char[strlen("#ast.") + strlen(name) + 1];
|
||||
strcpy(ast_name, "#ast.");
|
||||
strcat(ast_name + strlen("#ast."), name);
|
||||
return ast_name;
|
||||
}
|
||||
|
||||
bool glsl_symbol_table::add_type_ast(const char *name, const class ast_type_specifier *a)
|
||||
{
|
||||
symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(a);
|
||||
char ast_name[strlen("#ast.") + strlen(name) + 1];
|
||||
strcpy(ast_name, "#ast.");
|
||||
strcat(ast_name + strlen("#ast."), name);
|
||||
return _mesa_symbol_table_add_symbol(table, -1, ast_name, entry) == 0;
|
||||
char *ast_name = make_ast_name(name);
|
||||
bool ret = _mesa_symbol_table_add_symbol(table, -1, ast_name, entry) == 0;
|
||||
delete [] ast_name;
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool glsl_symbol_table::add_interface(const char *name, const glsl_type *i,
|
||||
|
@ -237,10 +245,9 @@ const glsl_type *glsl_symbol_table::get_type(const char *name)
|
|||
|
||||
const class ast_type_specifier *glsl_symbol_table::get_type_ast(const char *name)
|
||||
{
|
||||
char ast_name[strlen("#ast.") + strlen(name) + 1];
|
||||
strcpy(ast_name, "#ast.");
|
||||
strcat(ast_name + strlen("#ast."), name);
|
||||
char *ast_name = make_ast_name(name);
|
||||
symbol_table_entry *entry = get_entry(ast_name);
|
||||
delete [] ast_name;
|
||||
return entry != NULL ? entry->a : NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue