From 150d9a8281ad25aa1f003048ffe7136e379ab38c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <bjorn@lindeijer.nl> Date: Fri, 24 Jan 2025 16:33:15 +0100 Subject: [PATCH] Fixed potential crash when handling file reloads (#4154) A crash could occur if a file (usually a map, tileset or world) got reloaded while no editor was currently open. --- NEWS.md | 4 ++++ src/tiled/documentmanager.cpp | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/NEWS.md b/NEWS.md index 7512aac2dc..d05f91a61a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +### Unreleased + +* Fixed potential crash when handling file reloads + ### Tiled 1.11.1 (11 Jan 2025) * Releases now ship with support for loading Aseprite images (#4109) diff --git a/src/tiled/documentmanager.cpp b/src/tiled/documentmanager.cpp index 1c2c2d1030..1ef66ba313 100644 --- a/src/tiled/documentmanager.cpp +++ b/src/tiled/documentmanager.cpp @@ -974,8 +974,10 @@ bool DocumentManager::reloadDocument(Document *document) break; } - if (!isDocumentChangedOnDisk(currentDocument())) - mFileChangedWarning->setVisible(false); + // We may need to hide the file changed warning + if (auto current = currentDocument()) + if (!isDocumentChangedOnDisk(current)) + mFileChangedWarning->setVisible(false); emit documentReloaded(document); @@ -1172,8 +1174,10 @@ void DocumentManager::fileChanged(const QString &fileName) document->setChangedOnDisk(true); - if (isDocumentChangedOnDisk(currentDocument())) - mFileChangedWarning->setVisible(true); + // We may need to show the file changed warning + if (auto current = currentDocument()) + if (isDocumentChangedOnDisk(current)) + mFileChangedWarning->setVisible(true); } void DocumentManager::hideChangedWarning()