summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ast_function.cpp9
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);