From 18332a00948705a333b278855f557df7bb630fd7 Mon Sep 17 00:00:00 2001 From: Ignacio Etcheverry Date: Sat, 16 May 2020 04:03:29 +0200 Subject: websocket: Fix crash at exit when not running the editor EditorDebuggerServer::register_protocol_handler must not be called before editor initialization. Otherwise, if the editor is never initialized, the added StringName will not be released until static destructors are called (instead of being release during editor deinitialization). --- modules/websocket/register_types.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/websocket/register_types.cpp b/modules/websocket/register_types.cpp index 1ad249e1eb..bc50de414e 100644 --- a/modules/websocket/register_types.cpp +++ b/modules/websocket/register_types.cpp @@ -42,9 +42,16 @@ #endif #ifdef TOOLS_ENABLED #include "editor/debugger/editor_debugger_server.h" +#include "editor/editor_node.h" #include "editor_debugger_server_websocket.h" #endif +#ifdef TOOLS_ENABLED +static void _editor_init_callback() { + EditorDebuggerServer::register_protocol_handler("ws://", EditorDebuggerServerWebSocket::create); +} +#endif + void register_websocket_types() { #ifdef JAVASCRIPT_ENABLED EMWSPeer::make_default(); @@ -62,7 +69,7 @@ void register_websocket_types() { ClassDB::register_custom_instance_class(); #ifdef TOOLS_ENABLED - EditorDebuggerServer::register_protocol_handler("ws://", EditorDebuggerServerWebSocket::create); + EditorNode::add_init_callback(&_editor_init_callback); #endif } -- cgit v1.2.3