diff --git a/src/Client.cpp b/src/Client.cpp index 92b8252b..2da282d9 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -30,9 +30,10 @@ using std::vector; CModule* pModule = nullptr; \ if (NETWORK && (pModule = (NETWORK)->GetModules().FindModule(MOD))) { \ try { \ + CClient* pOldClient = pModule->GetClient(); \ pModule->SetClient(CLIENT); \ pModule->FUNC; \ - pModule->SetClient(nullptr); \ + pModule->SetClient(pOldClient); \ } catch (const CModule::EModException& e) { \ if (e == CModule::UNLOAD) { \ (NETWORK)->GetModules().UnloadModule(MOD); \ @@ -40,11 +41,13 @@ using std::vector; } \ } else if ((pModule = (USER)->GetModules().FindModule(MOD))) { \ try { \ + CClient* pOldClient = pModule->GetClient(); \ + CIRCNetwork* pOldNetwork = pModule->GetNetwork(); \ pModule->SetClient(CLIENT); \ pModule->SetNetwork(NETWORK); \ pModule->FUNC; \ - pModule->SetClient(nullptr); \ - pModule->SetNetwork(nullptr); \ + pModule->SetClient(pOldClient); \ + pModule->SetNetwork(pOldNetwork); \ } catch (const CModule::EModException& e) { \ if (e == CModule::UNLOAD) { \ (USER)->GetModules().UnloadModule(MOD); \ @@ -52,13 +55,16 @@ using std::vector; } \ } else if ((pModule = CZNC::Get().GetModules().FindModule(MOD))) { \ try { \ + CClient* pOldClient = pModule->GetClient(); \ + CIRCNetwork* pOldNetwork = pModule->GetNetwork(); \ + CUser* pOldUser = pModule->GetUser(); \ pModule->SetClient(CLIENT); \ pModule->SetNetwork(NETWORK); \ pModule->SetUser(USER); \ pModule->FUNC; \ - pModule->SetClient(nullptr); \ - pModule->SetNetwork(nullptr); \ - pModule->SetUser(nullptr); \ + pModule->SetClient(pOldClient); \ + pModule->SetNetwork(pOldNetwork); \ + pModule->SetUser(pOldUser); \ } catch (const CModule::EModException& e) { \ if (e == CModule::UNLOAD) { \ CZNC::Get().GetModules().UnloadModule(MOD); \