From 27e58363dde28f4667761970fc7068be8fe047ac Mon Sep 17 00:00:00 2001 From: Cara Salter Date: Mon, 3 Apr 2023 09:39:39 -0400 Subject: modules: Fix issue with unloading modules bound to OnMessage When unloaded, modules attached to OnMessage events would still be part of the list used by FOREACH_MOD to send events to, leading to a segfault. This changes the behavior of load and unload to place new modules at the *start* of the event handler arrays, leading them to already be processed by the time the bot gets to the ModuleManager. --- modules/mmanager/mmanager.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'modules/mmanager') diff --git a/modules/mmanager/mmanager.cpp b/modules/mmanager/mmanager.cpp index 36b6aae..1a012f9 100644 --- a/modules/mmanager/mmanager.cpp +++ b/modules/mmanager/mmanager.cpp @@ -127,7 +127,7 @@ public: } else { EmbedSimple("Can't do that, check server logs", message.msg.channel_id); } - }else if (lowercase(subcommand) == "ping") { + } else if (lowercase(subcommand) == "ping") { dpp::channel* c = dpp::find_channel(message.msg.channel_id); if (c) { std::chrono::steady_clock::time_point start_time = std::chrono::steady_clock::now(); @@ -139,7 +139,11 @@ public: this->EmbedSimple(fmt::format("**Pong!** REST Response time: {:.3f} ms", microseconds_ping / 1000, 4), cid); }); } - } else { + } else if (lowercase(subcommand) == "restart") { + EmbedSimple("Restarting...", message.msg.channel_id); + ::sleep(5); + exit(0); + } else { EmbedSimple("Command not found.", message.msg.channel_id); } } else { -- cgit v1.2.3