diff --git a/src/compiler/glsl/gl_nir_link_varyings.c b/src/compiler/glsl/gl_nir_link_varyings.c index 234d4485c1c..4f576f2ee71 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); }