diff --git a/.pick_status.json b/.pick_status.json index 599a75b5ec5..a092d94a331 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 83ad722e041..ffcccfe9fc1 100644 --- a/src/compiler/glsl/gl_nir_link_varyings.c +++ b/src/compiler/glsl/gl_nir_link_varyings.c @@ -745,7 +745,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; } } } @@ -799,7 +799,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) { @@ -807,7 +807,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; @@ -870,6 +870,7 @@ gl_nir_cross_validate_outputs_to_inputs(const struct gl_constants *consts, } } + out: _mesa_symbol_table_dtor(table); }