Browse Source

Avoid crash after a parsing error in GDScript

Pedro J. Estébanez 4 years ago
parent
commit
10c9c2ccd4
2 changed files with 4 additions and 9 deletions
  1. 3 9
      modules/gdscript/gdscript_cache.cpp
  2. 1 0
      modules/gdscript/gdscript_cache.h

+ 3 - 9
modules/gdscript/gdscript_cache.cpp

@@ -51,7 +51,9 @@ GDScriptParser *GDScriptParserRef::get_parser() const {
 Error GDScriptParserRef::raise_status(Status p_new_status) {
 	ERR_FAIL_COND_V(parser == nullptr, ERR_INVALID_DATA);
 
-	Error result = OK;
+	if (result != OK) {
+		return result;
+	}
 
 	while (p_new_status > status) {
 		switch (status) {
@@ -86,14 +88,6 @@ Error GDScriptParserRef::raise_status(Status p_new_status) {
 			}
 		}
 		if (result != OK) {
-			if (parser != nullptr) {
-				memdelete(parser);
-				parser = nullptr;
-			}
-			if (analyzer != nullptr) {
-				memdelete(analyzer);
-				analyzer = nullptr;
-			}
 			return result;
 		}
 	}

+ 1 - 0
modules/gdscript/gdscript_cache.h

@@ -54,6 +54,7 @@ private:
 	GDScriptParser *parser = nullptr;
 	GDScriptAnalyzer *analyzer = nullptr;
 	Status status = EMPTY;
+	Error result = OK;
 	String path;
 
 	friend class GDScriptCache;