Module: wine Branch: master Commit: 110045816c028619881475bd3ecc2d833e07e469 URL: http://source.winehq.org/git/wine.git/?a=commit;h=110045816c028619881475bd3e...
Author: Matteo Bruni mbruni@codeweavers.com Date: Wed Jul 18 16:25:12 2012 +0200
d3dcompiler: Don't allow const variables without initializers.
---
dlls/d3dcompiler_43/hlsl.y | 23 +++++++++++++++++------ 1 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y index 72a209f..5025f0c 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);