From b3a5e10f4a72732d3bc1e6bf075d507c1a8159a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= <pedrojrulez@gmail.com>
Date: Wed, 2 Aug 2023 11:43:35 +0200
Subject: [PATCH] Avoid crash on exiting due to late prints

---
 editor/editor_node.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 2fa02ae1d43..e0a014ac1af 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -6730,6 +6730,9 @@ void EditorNode::_print_handler(void *p_this, const String &p_string, bool p_err
 }
 
 void EditorNode::_print_handler_impl(const String &p_string, bool p_error, bool p_rich) {
+	if (!singleton) {
+		return;
+	}
 	if (p_error) {
 		singleton->log->add_message(p_string, EditorLog::MSG_TYPE_ERROR);
 	} else if (p_rich) {
@@ -6845,6 +6848,7 @@ EditorNode::EditorNode() {
 		DisplayServer::get_singleton()->cursor_set_custom_image(Ref<Resource>());
 	}
 
+	DEV_ASSERT(!singleton);
 	singleton = this;
 
 	EditorUndoRedoManager::get_singleton()->connect("version_changed", callable_mp(this, &EditorNode::_update_undo_redo_allowed));
@@ -8210,6 +8214,8 @@ EditorNode::~EditorNode() {
 
 	GDExtensionEditorPlugins::editor_node_add_plugin = nullptr;
 	GDExtensionEditorPlugins::editor_node_remove_plugin = nullptr;
+
+	singleton = nullptr;
 }
 
 /*