File tree Expand file tree Collapse file tree 4 files changed +12
-4
lines changed
Expand file tree Collapse file tree 4 files changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -30,7 +30,7 @@ void uninitialize_scene_types() {
3030 script_loader.unref ();
3131}
3232
33- static SchemeReplServer *repl_server;
33+ static SchemeReplServer *repl_server = nullptr ;
3434
3535void initialize_server_types () {
3636 GDREGISTER_CLASS (SchemeReplServer);
Original file line number Diff line number Diff line change @@ -25,12 +25,15 @@ void Scheme::_process(double delta) {
2525}
2626void Scheme::_enter_tree () {
2727 // TODO: move initialization here
28- SchemeReplServer::get_singleton ()->publish_node (this );
28+ auto server = SchemeReplServer::get_singleton ();
29+ if (server) server->publish_node (this );
30+
2931 Node::_enter_tree ();
3032}
3133
3234void Scheme::_exit_tree () {
33- SchemeReplServer::get_singleton ()->unpublish_node (this );
35+ auto server = SchemeReplServer::get_singleton ();
36+ if (server) server->unpublish_node (this );
3437
3538 if (_process_symbol) {
3639 auto _ = scheme.call_optional (" _exit_tree" );
Original file line number Diff line number Diff line change @@ -90,7 +90,7 @@ void SchemeReplServer::stop() {
9090 thread.unref ();
9191}
9292
93- SchemeReplServer *SchemeReplServer::singleton = NULL ;
93+ SchemeReplServer *SchemeReplServer::singleton = nullptr ;
9494
9595SchemeReplServer *SchemeReplServer::get_singleton () {
9696 return singleton;
@@ -100,6 +100,10 @@ SchemeReplServer::SchemeReplServer() {
100100 singleton = this ;
101101}
102102
103+ SchemeReplServer::~SchemeReplServer () {
104+ singleton = nullptr ;
105+ }
106+
103107void SchemeReplServer::_bind_methods () {
104108 ClassDB::bind_method (D_METHOD (" server_loop" ), &SchemeReplServer::server_loop);
105109 ClassDB::bind_method (D_METHOD (" reply" ), &SchemeReplServer::reply);
Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ class SchemeReplServer : public Object {
2626
2727public: // extension initialization API
2828 SchemeReplServer ();
29+ ~SchemeReplServer ();
2930 Error start ();
3031 void stop ();
3132
You can’t perform that action at this time.
0 commit comments