From 45e943f4fe9df34b86c649f99a91e5e8baeaf63c Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Wed, 6 Oct 2021 14:32:21 +0800 Subject: [PATCH] Fix crash when tooltip_request_func object is freed --- scene/gui/text_edit.cpp | 4 +++- scene/gui/text_edit.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 57bcbb7c2d8..6370ea9c951 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -2399,6 +2399,7 @@ Control::CursorShape TextEdit::get_cursor_shape(const Point2 &p_pos) const { } String TextEdit::get_tooltip(const Point2 &p_pos) const { + Object *tooltip_obj = ObjectDB::get_instance(tooltip_obj_id); if (!tooltip_obj) { return Control::get_tooltip(p_pos); } @@ -2421,7 +2422,8 @@ String TextEdit::get_tooltip(const Point2 &p_pos) const { } void TextEdit::set_tooltip_request_func(Object *p_obj, const StringName &p_function, const Variant &p_udata) { - tooltip_obj = p_obj; + ERR_FAIL_NULL(p_obj); + tooltip_obj_id = p_obj->get_instance_id(); tooltip_func = p_function; tooltip_ud = p_udata; } diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 07e585847aa..3230de776f0 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -330,7 +330,7 @@ private: int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column) const; /* Tooltip. */ - Object *tooltip_obj = nullptr; + ObjectID tooltip_obj_id; StringName tooltip_func; Variant tooltip_ud;