From a710cf6d10af2782455fb1f50a6b8988d6c4d5f9 Mon Sep 17 00:00:00 2001 From: elsid Date: Wed, 11 May 2022 23:12:16 +0200 Subject: [PATCH] Remove Environment cleanup Some managers may use the environment in the destructors. Setting them to nullptr may lead to nullptr dereference when the object is still alive and can be accessible. But after object is destructed it's UB anyway to dereference nullptr or a dangling pointer. --- apps/openmw/engine.cpp | 2 -- apps/openmw/mwbase/environment.cpp | 15 --------------- apps/openmw/mwbase/environment.hpp | 2 -- 3 files changed, 19 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index f39daa44d8..982ae92f11 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -468,8 +468,6 @@ OMW::Engine::~Engine() mStereoManager = nullptr; - mEnvironment.cleanup(); - mMechanicsManager = nullptr; mDialogueManager = nullptr; mJournal = nullptr; diff --git a/apps/openmw/mwbase/environment.cpp b/apps/openmw/mwbase/environment.cpp index 70027989a6..927db90288 100644 --- a/apps/openmw/mwbase/environment.cpp +++ b/apps/openmw/mwbase/environment.cpp @@ -28,21 +28,6 @@ MWBase::Environment::~Environment() sThis = nullptr; } -void MWBase::Environment::cleanup() -{ - mMechanicsManager = nullptr; - mDialogueManager = nullptr; - mJournal = nullptr; - mScriptManager = nullptr; - mWindowManager = nullptr; - mWorld = nullptr; - mSoundManager = nullptr; - mInputManager = nullptr; - mStateManager = nullptr; - mLuaManager = nullptr; - mResourceSystem = nullptr; -} - void MWBase::Environment::reportStats(unsigned int frameNumber, osg::Stats& stats) const { mMechanicsManager->reportStats(frameNumber, stats); diff --git a/apps/openmw/mwbase/environment.hpp b/apps/openmw/mwbase/environment.hpp index e8ea605a9a..0c5d39425b 100644 --- a/apps/openmw/mwbase/environment.hpp +++ b/apps/openmw/mwbase/environment.hpp @@ -112,8 +112,6 @@ namespace MWBase void setFrameDuration(float value) { mFrameDuration = value; } - void cleanup(); - /// Return instance of this class. static const Environment& get() {