diff options
author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2018-10-17 20:36:47 +0200 |
---|---|---|
committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2018-10-17 20:44:47 +0200 |
commit | 54bdc1e1f6a7fb85a5b193c9b8ecf0dcf06949e6 (patch) | |
tree | f4efffe6e195b0f3d76d084910d717f03634425c /modules/gdscript/gdscript_function.h | |
parent | fe0db6c4797b8094c64e4ad017e29be866288628 (diff) | |
download | redot-engine-54bdc1e1f6a7fb85a5b193c9b8ecf0dcf06949e6.tar.gz |
Fix crash on signal/resume to dangling target
Fixes #22443.
Diffstat (limited to 'modules/gdscript/gdscript_function.h')
-rw-r--r-- | modules/gdscript/gdscript_function.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/modules/gdscript/gdscript_function.h b/modules/gdscript/gdscript_function.h index bfb6d673f1..a47070de4f 100644 --- a/modules/gdscript/gdscript_function.h +++ b/modules/gdscript/gdscript_function.h @@ -225,7 +225,7 @@ private: bool _static; MultiplayerAPI::RPCMode rpc_mode; - GDScript *_script; + Ref<GDScript> _script; StringName name; Vector<Variant> constants; @@ -272,15 +272,13 @@ private: public: struct CallState { - ObjectID instance_id; //by debug only - ObjectID script_id; - + ObjectID instance_id; GDScriptInstance *instance; Vector<uint8_t> stack; int stack_size; Variant self; uint32_t alloca_size; - GDScript *_class; + Ref<GDScript> script; int ip; int line; int defarg; @@ -299,7 +297,7 @@ public: int get_default_argument_addr(int p_idx) const; GDScriptDataType get_return_type() const; GDScriptDataType get_argument_type(int p_idx) const; - GDScript *get_script() const { return _script; } + GDScript *get_script() const { return const_cast<GDScript *>(_script.ptr()); } StringName get_source() const { return source; } void debug_get_stack_member_state(int p_line, List<Pair<StringName, int> > *r_stackvars) const; |