summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConteZero <one@contezero.com>2022-04-13 14:22:20 +0200
committerConteZero <one@contezero.com>2022-04-13 15:41:34 +0200
commit6530e55f2d313941800994168dcb902c346fc2da (patch)
treec97b5aff38ee46ea973d22fdf685b89a55b588ab
parentd27f60f0e8d78059f8d075e16f0d242a7673bba0 (diff)
Fix select_all() crash in RichTextLabel
-rw-r--r--scene/gui/rich_text_label.cpp11
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;