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)
|
for (unsigned int i = 0; i < args->args_count; ++i)
|
||||||
{
|
{
|
||||||
if (args->args[i]->data_type->class == HLSL_CLASS_ERROR)
|
if (args->args[i]->data_type->class == HLSL_CLASS_ERROR)
|
||||||
{
|
goto fail;
|
||||||
args->instrs->value = ctx->error_instr;
|
|
||||||
return args->instrs;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((decl = find_function_call(ctx, name, args, false, loc)))
|
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;
|
return args->instrs;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
free_parse_initializer(args);
|
args->instrs->value = ctx->error_instr;
|
||||||
return NULL;
|
vkd3d_free(args->args);
|
||||||
|
return args->instrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct hlsl_block *add_shader_compilation(struct hlsl_ctx *ctx, const char *profile_name,
|
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 ')'
|
| var_identifier '(' func_arguments ')'
|
||||||
{
|
{
|
||||||
if (!($$ = add_call(ctx, $1, &$3, &@1)))
|
$$ = add_call(ctx, $1, &$3, &@1);
|
||||||
{
|
|
||||||
vkd3d_free($1);
|
|
||||||
YYABORT;
|
|
||||||
}
|
|
||||||
vkd3d_free($1);
|
vkd3d_free($1);
|
||||||
}
|
}
|
||||||
| KW_SAMPLER_STATE '{' state_block_start state_block '}'
|
| KW_SAMPLER_STATE '{' state_block_start state_block '}'
|
||||||
|
|||||||
Reference in New Issue
Block a user