From 110045816c028619881475bd3ecc2d833e07e469 Mon Sep 17 00:00:00 2001 From: Matteo Bruni Date: Wed, 18 Jul 2012 16:25:12 +0200 Subject: [PATCH] d3dcompiler: Don't allow const variables without initializers. --- dlls/d3dcompiler_43/hlsl.y | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y index 72a209fce78..5025f0cd9d7 100644 --- a/dlls/d3dcompiler_43/hlsl.y +++ b/dlls/d3dcompiler_43/hlsl.y @@ -640,11 +640,6 @@ declaration: var_modifiers type variables_def ';' var->name = v->name; var->modifiers = $1; var->semantic = v->semantic; - if (v->initializer) - { - FIXME("Variable with an initializer.\n"); - free_instr_list(v->initializer); - } if (hlsl_ctx.cur_scope == hlsl_ctx.globals) { @@ -652,11 +647,27 @@ declaration: var_modifiers type variables_def ';' local = FALSE; } + if (var->modifiers & HLSL_MODIFIER_CONST && !v->initializer) + { + hlsl_report_message(v->loc.file, v->loc.line, v->loc.col, + HLSL_LEVEL_ERROR, "const variable without initializer"); + free_declaration(var); + d3dcompiler_free(v); + continue; + } + ret = declare_variable(var, local); - if (ret == FALSE) + if (!ret) free_declaration(var); else TRACE("Declared variable %s.\n", var->name); + + if (v->initializer) + { + FIXME("Variable with an initializer.\n"); + free_instr_list(v->initializer); + } + d3dcompiler_free(v); } d3dcompiler_free($3);