mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
vkd3d-shader/hlsl: Return an error instruction from add_call() on failure.
This commit is contained in:
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
@@ -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 '}'
|
||||
|
||||
Reference in New Issue
Block a user