瀏覽代碼

Merge pull request #36251 from Chaosus/fix_struct_crash

Fix shader crash if duplicated struct members created
Yuri Roubinsky 5 年之前
父節點
當前提交
eece2c969c
共有 1 個文件被更改,包括 7 次插入1 次删除
  1. 7 1
      servers/visual/shader_language.cpp

+ 7 - 1
servers/visual/shader_language.cpp

@@ -5675,7 +5675,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) {
@@ -5732,6 +5732,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();