Matteo Bruni : d3dcompiler: Don' t allow const variables without initializers.
Alexandre Julliard
julliard at winehq.org
Wed Jul 18 12:44:41 CDT 2012
Module: wine
Branch: master
Commit: 110045816c028619881475bd3ecc2d833e07e469
URL: http://source.winehq.org/git/wine.git/?a=commit;h=110045816c028619881475bd3ecc2d833e07e469
Author: Matteo Bruni <mbruni at 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);
More information about the wine-cvs
mailing list