From 98a8fe5886249fe437caa406c94e1364667c3baa Mon Sep 17 00:00:00 2001
From: George Hazan <ghazan@miranda.im>
Date: Sun, 11 Sep 2022 11:50:24 -0700
Subject: =?UTF-8?q?fixes=20#3163=20(HistoryPP:=20=D0=BF=D1=80=D0=BE=D0=B1?=
 =?UTF-8?q?=D0=BB=D0=B5=D0=BC=D1=8B=20=D1=81=20=D0=B2=D1=8B=D0=B3=D1=80?=
 =?UTF-8?q?=D1=83=D0=B7=D0=BA=D0=BE=D0=B9=20=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8?=
 =?UTF-8?q?=D0=BD=D0=B0)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/mir_app/src/newplugins.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

(limited to 'src/mir_app')

diff --git a/src/mir_app/src/newplugins.cpp b/src/mir_app/src/newplugins.cpp
index 4b12871980..4dca4ebb85 100644
--- a/src/mir_app/src/newplugins.cpp
+++ b/src/mir_app/src/newplugins.cpp
@@ -513,15 +513,18 @@ bool TryLoadPlugin(pluginEntry *p, bool bDynamic)
 			MUUID *piface = p->m_pInterfaces;
 			for (int i = 0; piface[i] != miid_last; i++) {
 				int idx = getDefaultPluginIdx(piface[i]);
-				if (idx != -1 && pluginDefault[idx].pImpl) {
+				auto *pOldPlugin = pluginDefault[idx].pImpl;
+				if (idx != -1 && pOldPlugin) {
 					if (!bDynamic) { // this place is already occupied, skip & disable
 						SetPluginOnWhiteList(p->pluginname, false);
 						return false;
 					}
 
 					// we're loading new implementation dynamically, let the old one die
-					if (!p->bIsCore)
-						Plugin_UnloadDyn(pluginDefault[idx].pImpl);
+					if (!p->bIsCore) {
+						SetPluginOnWhiteList(pOldPlugin->pluginname, false);
+						Plugin_UnloadDyn(pOldPlugin);
+					}
 				}
 			}
 		}
-- 
cgit v1.2.3