glsl: change variable declared assertion into conditional
The slang_variable::declared field originated as a debug field but can be promoted for use during sematic error checking. Fixes fd.o bug 27921. NOTE: this is a candidate for back-porting to the 7.8 stable branch.
This commit is contained in:
parent
6405ecb399
commit
a12614362a
|
@ -4187,11 +4187,10 @@ _slang_gen_variable(slang_assemble_ctx * A, slang_operation *oper)
|
|||
slang_atom name = oper->var ? oper->var->a_name : oper->a_id;
|
||||
slang_variable *var = _slang_variable_locate(oper->locals, name, GL_TRUE);
|
||||
slang_ir_node *n;
|
||||
if (!var) {
|
||||
if (!var || !var->declared) {
|
||||
slang_info_log_error(A->log, "undefined variable '%s'", (char *) name);
|
||||
return NULL;
|
||||
}
|
||||
assert(var->declared);
|
||||
n = new_var(A, var);
|
||||
return n;
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ typedef struct slang_variable_
|
|||
GLuint size; /**< Variable's size in bytes */
|
||||
GLboolean is_global;
|
||||
GLboolean isTemp; /**< a named temporary (__resultTmp) */
|
||||
GLboolean declared; /**< for debug */
|
||||
GLboolean declared; /**< has the var been declared? */
|
||||
struct slang_ir_storage_ *store; /**< Storage for this var */
|
||||
} slang_variable;
|
||||
|
||||
|
|
Loading…
Reference in New Issue