From 1d3ade925fbbe041ecb61aac01139c0af5415c74 Mon Sep 17 00:00:00 2001 From: kobewi Date: Thu, 15 May 2025 18:03:05 +0200 Subject: [PATCH] Fix crash when checking unsaved history --- editor/editor_undo_redo_manager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/editor/editor_undo_redo_manager.cpp b/editor/editor_undo_redo_manager.cpp index 2737d4d4b2e..67a557fe575 100644 --- a/editor/editor_undo_redo_manager.cpp +++ b/editor/editor_undo_redo_manager.cpp @@ -377,16 +377,20 @@ void EditorUndoRedoManager::set_history_as_saved(int p_id) { void EditorUndoRedoManager::set_history_as_unsaved(int p_id) { History &history = get_or_create_history(p_id); - history.saved_version = -1; + history.saved_version = 0; } bool EditorUndoRedoManager::is_history_unsaved(int p_id) { History &history = get_or_create_history(p_id); + if (history.saved_version == 0) { + return true; + } int version_difference = history.undo_redo->get_version() - history.saved_version; if (version_difference > 0) { List::Element *E = history.undo_stack.back(); for (int i = 0; i < version_difference; i++) { + ERR_FAIL_NULL_V_MSG(E, false, "Inconsistent undo history."); if (E->get().mark_unsaved) { return true; } @@ -395,6 +399,7 @@ bool EditorUndoRedoManager::is_history_unsaved(int p_id) { } else if (version_difference < 0) { List::Element *E = history.redo_stack.back(); for (int i = 0; i > version_difference; i--) { + ERR_FAIL_NULL_V_MSG(E, false, "Inconsistent redo history."); if (E->get().mark_unsaved) { return true; }