Fix shader crash if duplicated struct members created
This commit is contained in:
parent
fba6b62054
commit
ae8de1f2ce
1 changed files with 7 additions and 1 deletions
|
@ -5620,7 +5620,7 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct
|
|||
st.shader_struct = st_node;
|
||||
|
||||
int member_count = 0;
|
||||
|
||||
Set<String> member_names;
|
||||
while (true) { // variables list
|
||||
tk = _get_token();
|
||||
if (tk.type == TK_CURLY_BRACKET_CLOSE) {
|
||||
|
@ -5677,6 +5677,12 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct
|
|||
member->struct_name = struct_name;
|
||||
member->name = tk.text;
|
||||
|
||||
if (member_names.has(member->name)) {
|
||||
_set_error("Redefinition of '" + String(member->name) + "'");
|
||||
return ERR_PARSE_ERROR;
|
||||
}
|
||||
member_names.insert(member->name);
|
||||
|
||||
tk = _get_token();
|
||||
if (tk.type == TK_BRACKET_OPEN) {
|
||||
tk = _get_token();
|
||||
|
|
Loading…
Reference in a new issue