diff --git a/.pick_status.json b/.pick_status.json index 49bb2593cd1..9e837040ed0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -84,7 +84,7 @@ "description": "glsl/nir: fix gl_nir_cross_validate_outputs_to_inputs() memory leak", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "7d1948e9b5d953cf8f5a56c676c935621b8da2bd", "notes": null diff --git a/src/compiler/glsl/gl_nir_link_varyings.c b/src/compiler/glsl/gl_nir_link_varyings.c index e3ba6fb2812..707c30392c4 100644 --- a/src/compiler/glsl/gl_nir_link_varyings.c +++ b/src/compiler/glsl/gl_nir_link_varyings.c @@ -746,7 +746,7 @@ gl_nir_cross_validate_outputs_to_inputs(const struct gl_constants *consts, if (!validate_explicit_variable_location(consts, output_explicit_locations, var, prog, producer)) { - return; + goto out; } } } @@ -800,7 +800,7 @@ gl_nir_cross_validate_outputs_to_inputs(const struct gl_constants *consts, if (!validate_explicit_variable_location(consts, input_explicit_locations, input, prog, consumer)) { - return; + goto out; } while (idx < slot_limit) { @@ -808,7 +808,7 @@ gl_nir_cross_validate_outputs_to_inputs(const struct gl_constants *consts, linker_error(prog, "Invalid location %u in %s shader\n", idx, _mesa_shader_stage_to_string(consumer->Stage)); - return; + goto out; } output = output_explicit_locations[idx][input->data.location_frac].var; @@ -871,6 +871,7 @@ gl_nir_cross_validate_outputs_to_inputs(const struct gl_constants *consts, } } + out: _mesa_symbol_table_dtor(table); }