Fix extends issue, closes #4026
This commit is contained in:
parent
8e1c0f287d
commit
565bb3afcc
|
@ -1497,7 +1497,8 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa
|
||||||
String sub = p_class->extends_class[i];
|
String sub = p_class->extends_class[i];
|
||||||
if (script->subclasses.has(sub)) {
|
if (script->subclasses.has(sub)) {
|
||||||
|
|
||||||
script=script->subclasses[sub];
|
Ref<Script> subclass = script->subclasses[sub]; //avoid reference from dissapearing
|
||||||
|
script=subclass;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
_set_error("Could not find subclass: "+sub,p_class);
|
_set_error("Could not find subclass: "+sub,p_class);
|
||||||
|
@ -1683,6 +1684,7 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
|
||||||
p_script->constants.insert(name,subclass); //once parsed, goes to the list of constants
|
p_script->constants.insert(name,subclass); //once parsed, goes to the list of constants
|
||||||
p_script->subclasses.insert(name,subclass);
|
p_script->subclasses.insert(name,subclass);
|
||||||
|
|
||||||
|
|
|
@ -874,6 +874,10 @@ GDScript::~GDScript() {
|
||||||
memdelete( E->get() );
|
memdelete( E->get() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Map<StringName,Ref<GDScript> >::Element *E=subclasses.front();E;E=E->next()) {
|
||||||
|
E->get()->_owner=NULL; //bye, you are no longer owned cause I died
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
if (GDScriptLanguage::get_singleton()->lock) {
|
if (GDScriptLanguage::get_singleton()->lock) {
|
||||||
GDScriptLanguage::get_singleton()->lock->lock();
|
GDScriptLanguage::get_singleton()->lock->lock();
|
||||||
|
|
Loading…
Reference in New Issue