From 71d4eb66f2c16fb068eaabb1717544e8ad53c17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Lu=C3=ADs=20Vaz=20Silva?= Date: Wed, 28 Jun 2023 14:28:07 -0300 Subject: [PATCH] Clear Services Map during VM Shutdown --- src/common/objects/dobjtype.cpp | 3 +++ src/common/scripting/interface/vmnatives.cpp | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/common/objects/dobjtype.cpp b/src/common/objects/dobjtype.cpp index b39c930f8..f9ccc4c77 100644 --- a/src/common/objects/dobjtype.cpp +++ b/src/common/objects/dobjtype.cpp @@ -231,6 +231,8 @@ void PClass::StaticInit () // //========================================================================== +void ClearServices(); + void PClass::StaticShutdown () { if (WP_NOCHANGE != nullptr) @@ -238,6 +240,7 @@ void PClass::StaticShutdown () delete WP_NOCHANGE; } + ClearServices(); // delete all variables containing pointers to script functions. for (auto p : FunctionPtrList) { diff --git a/src/common/scripting/interface/vmnatives.cpp b/src/common/scripting/interface/vmnatives.cpp index 2c7df6fb7..54cc0d2a9 100644 --- a/src/common/scripting/interface/vmnatives.cpp +++ b/src/common/scripting/interface/vmnatives.cpp @@ -57,8 +57,8 @@ static ZSMap AllServices; -static void MarkServices() { - +static void MarkServices() +{ ZSMap::Iterator it(AllServices); ZSMap::Pair* pair; while (it.NextPair(pair)) @@ -82,6 +82,11 @@ void InitServices() GC::AddMarkerFunc(&MarkServices); } +void ClearServices() +{ + AllServices.Clear(); +} + //==========================================================================