summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript_compiler.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2019-06-02 21:10:43 +0200
committerGitHub <noreply@github.com>2019-06-02 21:10:43 +0200
commit512f8c7e62a67dcb0540b63bbae2b523283d004d (patch)
treefb69ead75c2f11d7d69dd50b6d3c2084b65e35de /modules/gdscript/gdscript_compiler.cpp
parent8772beb451767093464f55c0630683e7a7a2657d (diff)
parenteed5967c0295c8c0ab214712e4882fcad6193905 (diff)
downloadredot-engine-512f8c7e62a67dcb0540b63bbae2b523283d004d.tar.gz
Merge pull request #29397 from GodotExplorer/gdscript-fix-inner-class-freed
Fix GDSCript inner classes be freed after compile
Diffstat (limited to 'modules/gdscript/gdscript_compiler.cpp')
-rw-r--r--modules/gdscript/gdscript_compiler.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index f7be0ce37c..189317b163 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -1977,12 +1977,12 @@ Error GDScriptCompiler::_parse_class_level(GDScript *p_script, const GDScriptPar
for (int i = 0; i < p_class->subclasses.size(); i++) {
StringName name = p_class->subclasses[i]->name;
-
- GDScript *subclass = p_script->subclasses[name].ptr();
+ Ref<GDScript> &subclass = p_script->subclasses[name];
+ GDScript *subclass_ptr = subclass.ptr();
// Subclass might still be parsing, just skip it
- if (!parsed_classes.has(subclass) && !parsing_classes.has(subclass)) {
- Error err = _parse_class_level(subclass, p_class->subclasses[i], p_keep_state);
+ if (!parsed_classes.has(subclass_ptr) && !parsing_classes.has(subclass_ptr)) {
+ Error err = _parse_class_level(subclass_ptr, p_class->subclasses[i], p_keep_state);
if (err)
return err;
}