diff --git a/extensions/clientprefs/cookie.cpp b/extensions/clientprefs/cookie.cpp index afc905e5..9f8430c9 100644 --- a/extensions/clientprefs/cookie.cpp +++ b/extensions/clientprefs/cookie.cpp @@ -222,6 +222,8 @@ void CookieManager::OnClientDisconnecting(int client) if (!current->changed) { + current->parent->data[client] = NULL; + delete current; _iter = clientData[client].erase(_iter); continue; } @@ -314,7 +316,6 @@ void CookieManager::ClientConnectCallback(int client, IQuery *data) } while (results->MoreRows()); - statsLoaded[client] = true; cookieDataLoadedForward->PushCell(client); diff --git a/extensions/clientprefs/extension.cpp b/extensions/clientprefs/extension.cpp index acc54c4a..3f4d9315 100644 --- a/extensions/clientprefs/extension.cpp +++ b/extensions/clientprefs/extension.cpp @@ -194,7 +194,6 @@ bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late) phrases->AddPhraseFile("clientprefs.phrases"); phrases->AddPhraseFile("common.phrases"); - return true; } @@ -206,6 +205,7 @@ void ClientPrefs::SDK_OnAllLoaded() void ClientPrefs::SDK_OnUnload() { handlesys->RemoveType(g_CookieType, myself->GetIdentity()); + handlesys->RemoveType(g_CookieIterator, myself->GetIdentity()); g_CookieManager.Unload(); @@ -214,6 +214,11 @@ void ClientPrefs::SDK_OnUnload() forwards->ReleaseForward(g_CookieManager.cookieDataLoadedForward); g_CookieManager.clientMenu->Destroy(); + + phrases->Destroy(); + + plsys->RemovePluginsListener(&g_CookieManager); + playerhelpers->RemoveClientListener(&g_CookieManager); } size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...) diff --git a/extensions/clientprefs/query.cpp b/extensions/clientprefs/query.cpp index a927b8eb..0016a93d 100644 --- a/extensions/clientprefs/query.cpp +++ b/extensions/clientprefs/query.cpp @@ -98,6 +98,7 @@ TQueryOp::TQueryOp(IDatabase *db, const char *query, enum querytype type, int cl m_Query = query; m_type = type; m_client = client; + m_pQuery = NULL; m_pDatabase->IncReferenceCount(); } @@ -108,6 +109,7 @@ TQueryOp::TQueryOp(IDatabase *db, const char *query, enum querytype type, Cookie m_Query = query; m_type = type; pCookie = cookie; + m_pQuery = NULL; m_pDatabase->IncReferenceCount(); }