瀏覽代碼

Fix shader compiler crash when parsing case labels with non-existent vars.

Max Shawabkeh 3 月之前
父節點
當前提交
d042763750
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      servers/rendering/shader_language.cpp

+ 5 - 1
servers/rendering/shader_language.cpp

@@ -8532,7 +8532,11 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
 					DataType data_type;
 					DataType data_type;
 					bool is_const;
 					bool is_const;
 
 
-					_find_identifier(p_block, false, p_function_info, tk.text, &data_type, nullptr, &is_const);
+					bool found = _find_identifier(p_block, false, p_function_info, tk.text, &data_type, nullptr, &is_const);
+					if (!found) {
+						_set_error(vformat(RTR("Undefined identifier '%s' in a case label."), String(tk.text)));
+						return ERR_PARSE_ERROR;
+					}
 					if (is_const && data_type == p_block->expected_type) {
 					if (is_const && data_type == p_block->expected_type) {
 						correct_constant_expression = true;
 						correct_constant_expression = true;
 					}
 					}