From 6cde8b3950c254f75b20beb31a9a184d3afc8d5d Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Thu, 1 Dec 2016 23:31:26 +0000 Subject: [PATCH] Fix #1347 for 1.7 branch. Commit 51fb6f09f4b8065b82f9a0ab1d1702ad8998f389 in 1.6.x branch has more details. --- src/Client.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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); \