Merge pull request #93469 from Chaosus/shader_fix_crash
Fix crash on shader constant initialization on MinGW compiler
This commit is contained in:
commit
2e8ebb4a5e
2 changed files with 8 additions and 4 deletions
|
@ -1446,8 +1446,12 @@ bool ShaderLanguage::_find_identifier(const BlockNode *p_block, bool p_allow_rea
|
|||
*r_struct_name = shader->constants[p_identifier].struct_name;
|
||||
}
|
||||
if (r_constant_value) {
|
||||
if (shader->constants[p_identifier].initializer && shader->constants[p_identifier].initializer->values.size() == 1) {
|
||||
*r_constant_value = shader->constants[p_identifier].initializer->values[0];
|
||||
if (shader->constants[p_identifier].initializer && shader->constants[p_identifier].initializer->type == Node::NODE_TYPE_CONSTANT) {
|
||||
ConstantNode *cnode = static_cast<ConstantNode *>(shader->constants[p_identifier].initializer);
|
||||
|
||||
if (cnode->values.size() == 1) {
|
||||
*r_constant_value = cnode->values[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (r_type) {
|
||||
|
@ -9541,7 +9545,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
|
|||
}
|
||||
}
|
||||
|
||||
constant.initializer = static_cast<ConstantNode *>(expr);
|
||||
constant.initializer = expr;
|
||||
|
||||
if (!_compare_datatypes(type, struct_name, 0, expr->get_datatype(), expr->get_datatype_name(), expr->get_array_size())) {
|
||||
return ERR_PARSE_ERROR;
|
||||
|
|
|
@ -620,7 +620,7 @@ public:
|
|||
DataType type;
|
||||
StringName struct_name;
|
||||
DataPrecision precision;
|
||||
ConstantNode *initializer = nullptr;
|
||||
Node *initializer = nullptr;
|
||||
int array_size;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue