vkd3d-shader/hlsl: Return an error instruction from add_call() on failure.

This commit is contained in:
Elizabeth Figura
2025-12-02 13:22:40 -06:00
committed by Henri Verbeet
parent 00daf9eb0a
commit 47c1b05a5f
Notes: Henri Verbeet 2025-12-09 17:22:02 +01:00
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1855

View File

@@ -5647,10 +5647,7 @@ static struct hlsl_block *add_call(struct hlsl_ctx *ctx, const char *name,
for (unsigned int i = 0; i < args->args_count; ++i)
{
if (args->args[i]->data_type->class == HLSL_CLASS_ERROR)
{
args->instrs->value = ctx->error_instr;
return args->instrs;
}
goto fail;
}
if ((decl = find_function_call(ctx, name, args, false, loc)))
@@ -5707,8 +5704,9 @@ static struct hlsl_block *add_call(struct hlsl_ctx *ctx, const char *name,
return args->instrs;
fail:
free_parse_initializer(args);
return NULL;
args->instrs->value = ctx->error_instr;
vkd3d_free(args->args);
return args->instrs;
}
static struct hlsl_block *add_shader_compilation(struct hlsl_ctx *ctx, const char *profile_name,
@@ -9582,11 +9580,7 @@ primary_expr:
}
| var_identifier '(' func_arguments ')'
{
if (!($$ = add_call(ctx, $1, &$3, &@1)))
{
vkd3d_free($1);
YYABORT;
}
$$ = add_call(ctx, $1, &$3, &@1);
vkd3d_free($1);
}
| KW_SAMPLER_STATE '{' state_block_start state_block '}'