diff options
-rw-r--r-- | ast_function.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ast_function.cpp b/ast_function.cpp index 691e6aeba0..ff2dfa502f 100644 --- a/ast_function.cpp +++ b/ast_function.cpp @@ -513,7 +513,14 @@ ast_function_expression::hir(exec_list *instructions, bool all_parameters_are_constant = true; - assert(!this->expressions.is_empty()); + /* This handles invalid constructor calls such as 'vec4 v = vec4();' + */ + if (this->expressions.is_empty()) { + _mesa_glsl_error(& loc, state, "too few components to construct " + "`%s'", + constructor_type->name); + return ir_call::get_error_instruction(); + } foreach_list (n, &this->expressions) { ast_node *ast = exec_node_data(ast_node, n, link); |