diff --git a/src/api-channelmode.c b/src/api-channelmode.c index ae6baa247..e899829d9 100644 --- a/src/api-channelmode.c +++ b/src/api-channelmode.c @@ -312,11 +312,6 @@ void unload_extcmode_commit(Cmode *cmode) void CmodeDel(Cmode *cmode) { - if (loop.ircd_rehashing) - cmode->unloaded = 1; - else - unload_extcmode_commit(cmode); - if (cmode->owner) { ModuleObject *cmodeobj; @@ -329,6 +324,11 @@ void CmodeDel(Cmode *cmode) } cmode->owner = NULL; } + if (loop.ircd_rehashing) + cmode->unloaded = 1; + else + unload_extcmode_commit(cmode); + } void unload_all_unused_extcmodes(void) diff --git a/src/api-clicap.c b/src/api-clicap.c index ba5823ad9..01d34d581 100644 --- a/src/api-clicap.c +++ b/src/api-clicap.c @@ -233,11 +233,6 @@ void unload_clicap_commit(ClientCapability *clicap) */ void ClientCapabilityDel(ClientCapability *clicap) { - if (loop.ircd_rehashing) - clicap->unloaded = 1; - else - unload_clicap_commit(clicap); - if (clicap->owner) { ModuleObject *mobj; @@ -250,13 +245,18 @@ void ClientCapabilityDel(ClientCapability *clicap) } clicap->owner = NULL; } + + if (loop.ircd_rehashing) + clicap->unloaded = 1; + else + unload_clicap_commit(clicap); } void unload_all_unused_caps(void) { ClientCapability *clicap, *clicap_next; - for (clicap = clicaps; clicap; clicap = clicap->next) + for (clicap = clicaps; clicap; clicap = clicap_next) { clicap_next = clicap->next; if (clicap->unloaded) diff --git a/src/api-history-backend.c b/src/api-history-backend.c index 35c32ef01..8847f1d13 100644 --- a/src/api-history-backend.c +++ b/src/api-history-backend.c @@ -123,11 +123,6 @@ void unload_history_backend_commit(HistoryBackend *m) */ void HistoryBackendDel(HistoryBackend *m) { - if (loop.ircd_rehashing) - m->unloaded = 1; - else - unload_history_backend_commit(m); - if (m->owner) { ModuleObject *mobj; @@ -141,6 +136,11 @@ void HistoryBackendDel(HistoryBackend *m) } m->owner = NULL; } + + if (loop.ircd_rehashing) + m->unloaded = 1; + else + unload_history_backend_commit(m); } void unload_all_unused_history_backends(void) diff --git a/src/api-messagetag.c b/src/api-messagetag.c index 9d39c2220..f9b2af733 100644 --- a/src/api-messagetag.c +++ b/src/api-messagetag.c @@ -138,11 +138,6 @@ void unload_mtag_handler_commit(MessageTagHandler *m) */ void MessageTagHandlerDel(MessageTagHandler *m) { - if (loop.ircd_rehashing) - m->unloaded = 1; - else - unload_mtag_handler_commit(m); - if (m->owner) { ModuleObject *mobj; @@ -156,6 +151,11 @@ void MessageTagHandlerDel(MessageTagHandler *m) } m->owner = NULL; } + + if (loop.ircd_rehashing) + m->unloaded = 1; + else + unload_mtag_handler_commit(m); } void unload_all_unused_mtag_handlers(void)