diff --git a/.pick_status.json b/.pick_status.json index 9da89662518..4b880eff873 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -67,7 +67,7 @@ "description": "glsl: stop cascading errors if process_parameters() fails", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "53e4159eaaf692071bf63365eb27a16c97c9a3e5" }, diff --git a/src/compiler/glsl/ast_function.cpp b/src/compiler/glsl/ast_function.cpp index 08a200347af..b6b81bf1e14 100644 --- a/src/compiler/glsl/ast_function.cpp +++ b/src/compiler/glsl/ast_function.cpp @@ -49,9 +49,12 @@ process_parameters(exec_list *instructions, exec_list *actual_parameters, ast->set_is_lhs(true); ir_rvalue *result = ast->hir(instructions, state); - /* Error happened, bail out. */ - if (state->error) - return 0; + /* Error happened processing function parameter */ + if (!result) { + actual_parameters->push_tail(ir_rvalue::error_value(mem_ctx)); + count++; + continue; + } ir_constant *const constant = result->constant_expression_value(mem_ctx);