Zebediah Figura : d3dcompiler: Fail if modifiers are applied to a function.
Module: wine Branch: master Commit: afd3a1e388ab720ae6eadad3ac7591ba9fa1614f URL: https://source.winehq.org/git/wine.git/?a=commit;h=afd3a1e388ab720ae6eadad3a... Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Fri Mar 13 17:34:55 2020 +0100 d3dcompiler: Fail if modifiers are applied to a function. Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Matteo Bruni <mbruni(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3dcompiler_43/hlsl.y | 7 +++++++ dlls/d3dcompiler_43/tests/hlsl_d3d9.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y index 498ca4bb59..59e0df9d8c 100644 --- a/dlls/d3dcompiler_43/hlsl.y +++ b/dlls/d3dcompiler_43/hlsl.y @@ -1322,8 +1322,15 @@ func_declaration: func_prototype compound_statement pop_scope(&hlsl_ctx); } + /* var_modifiers is necessary to avoid shift/reduce conflicts. */ func_prototype: var_modifiers type var_identifier '(' parameters ')' colon_attribute { + if ($1) + { + hlsl_report_message(get_location(&@1), HLSL_LEVEL_ERROR, + "unexpected modifiers on a function"); + YYABORT; + } if (get_variable(hlsl_ctx.globals, $3)) { hlsl_report_message(get_location(&@3), diff --git a/dlls/d3dcompiler_43/tests/hlsl_d3d9.c b/dlls/d3dcompiler_43/tests/hlsl_d3d9.c index b16f6e3454..3edee34d8d 100644 --- a/dlls/d3dcompiler_43/tests/hlsl_d3d9.c +++ b/dlls/d3dcompiler_43/tests/hlsl_d3d9.c @@ -925,6 +925,11 @@ static void test_fail(void) " float a[(x = 2)];\n" " return float4(0, 0, 0, 0);\n" "}", + + "uniform float4 test() : SV_TARGET\n" + "{\n" + " return float4(0, 0, 0, 0);\n" + "}", }; static const char *targets[] = {"ps_2_0", "ps_3_0", "ps_4_0"};
participants (1)
-
Alexandre Julliard