Преглед на файлове

-properly handle newline in \ (line continuation) in gdscript, fixes #2112
-also fix a small crash in export detection with scripts that include themselves

Juan Linietsky преди 9 години
родител
ревизия
0e0a7c9494
променени са 2 файла, в които са добавени 12 реда и са изтрити 17 реда
  1. 11 17
      modules/gdscript/gd_script.cpp
  2. 1 0
      modules/gdscript/gd_tokenizer.cpp

+ 11 - 17
modules/gdscript/gd_script.cpp

@@ -33,17 +33,6 @@
 #include "os/file_access.h"
 #include "io/file_access_encrypted.h"
 
-/* TODO:
-
-   *populate globals
-   *do checks as close to debugger as possible (but don't do debugger)
-   *const check plz
-   *check arguments and default arguments in GDFunction
-   -get property list in instance?
-   *missing opcodes
-   -const checks
-   -make thread safe
- */
 
 
 
@@ -1740,16 +1729,21 @@ bool GDScript::_update_exports() {
 					}
 				}
 
-				Ref<GDScript> bf = ResourceLoader::load(path);
+				if (path!=get_path()) {
+
+					Ref<GDScript> bf = ResourceLoader::load(path);
 
-				if (bf.is_valid()) {
+					if (bf.is_valid()) {
 
-					//print_line("parent is: "+bf->get_path());
-					base_cache=bf;
-					bf->inheriters_cache.insert(get_instance_ID());
+						//print_line("parent is: "+bf->get_path());
+						base_cache=bf;
+						bf->inheriters_cache.insert(get_instance_ID());
 
-					//bf->_update_exports(p_instances,true,false);
+						//bf->_update_exports(p_instances,true,false);
 
+					}
+				} else {
+					ERR_PRINT(("Path extending itself in  "+path).utf8().get_data());
 				}
 			}
 

+ 1 - 0
modules/gdscript/gd_tokenizer.cpp

@@ -260,6 +260,7 @@ void GDTokenizerText::_advance() {
 				}
 
 				INCPOS(1);
+				line++;
 
 				while(GETCHAR(0)==' ' || GETCHAR(0)=='\t') {
 					INCPOS(1);