[PATCH 2/5] d3dcompiler: Don't allow const variables without initializers.
Matteo Bruni
mbruni at codeweavers.com
Wed Jul 18 09:25:12 CDT 2012
---
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);
--
1.7.8.6
More information about the wine-patches
mailing list