소스 검색

VariantParser: Fix uninitialized ResourceParser funcs

They could cause a segfault when parsing values with ID "Resource"
as apparently we never set a valid `func` for it.

Fixes crash part of #42115.

(cherry picked from commit f3aaa713d9296bae68a6db91157a2063f01fddc5)
Rémi Verschelde 4 년 전
부모
커밋
7be11742b5
2개의 변경된 파일4개의 추가작업 그리고 6개의 파일을 삭제
  1. 4 5
      core/variant_parser.h
  2. 0 1
      scene/resources/resource_format_text.cpp

+ 4 - 5
core/variant_parser.h

@@ -76,11 +76,10 @@ public:
 	typedef Error (*ParseResourceFunc)(void *p_self, Stream *p_stream, Ref<Resource> &r_res, int &line, String &r_err_str);
 
 	struct ResourceParser {
-
-		void *userdata;
-		ParseResourceFunc func;
-		ParseResourceFunc ext_func;
-		ParseResourceFunc sub_func;
+		void *userdata = nullptr;
+		ParseResourceFunc func = nullptr;
+		ParseResourceFunc ext_func = nullptr;
+		ParseResourceFunc sub_func = nullptr;
 	};
 
 	enum TokenType {

+ 0 - 1
scene/resources/resource_format_text.cpp

@@ -898,7 +898,6 @@ void ResourceInteractiveLoaderText::open(FileAccess *p_f, bool p_skip_first_tag)
 
 	rp.ext_func = _parse_ext_resources;
 	rp.sub_func = _parse_sub_resources;
-	rp.func = NULL;
 	rp.userdata = this;
 }