diff options
Diffstat (limited to 'ast_function.cpp')
| -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); | 
