diff options
author | ConteZero <one@contezero.com> | 2022-04-13 14:22:20 +0200 |
---|---|---|
committer | ConteZero <one@contezero.com> | 2022-04-13 15:41:34 +0200 |
commit | 6530e55f2d313941800994168dcb902c346fc2da (patch) | |
tree | c97b5aff38ee46ea973d22fdf685b89a55b588ab | |
parent | d27f60f0e8d78059f8d075e16f0d242a7673bba0 (diff) |
Fix select_all() crash in RichTextLabel
-rw-r--r-- | scene/gui/rich_text_label.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index c00298ff2f..ec13399f82 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -4257,7 +4257,7 @@ void RichTextLabel::select_all() { while (it) { if (it->type != ITEM_FRAME) { - if (from_item == nullptr) { + if (!from_item) { from_item = it; } else { to_item = it; @@ -4265,13 +4265,22 @@ void RichTextLabel::select_all() { } it = _get_next_item(it, true); } + if (!from_item || !to_item) { + return; + } ItemFrame *from_frame = nullptr; int from_line = 0; _find_frame(from_item, &from_frame, &from_line); + if (!from_frame) { + return; + } ItemFrame *to_frame = nullptr; int to_line = 0; _find_frame(to_item, &to_frame, &to_line); + if (!to_frame) { + return; + } selection.from_line = from_line; selection.from_frame = from_frame; selection.from_char = 0; |