From c4e00be91a6d243ae330439a0db2772c12cbfabe Mon Sep 17 00:00:00 2001 From: chaigler Date: Thu, 2 Jul 2020 15:50:29 -0400 Subject: [PATCH] Fix for crash in _onZoningChanged methods when called by hidden objects. Hidden objects are removed from the scene manager so calls to getSceneManager()->getZoneManager() crash and burn. --- Engine/source/forest/forest.cpp | 4 +++- Engine/source/terrain/terrData.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Engine/source/forest/forest.cpp b/Engine/source/forest/forest.cpp index 985f34151..dd675480a 100644 --- a/Engine/source/forest/forest.cpp +++ b/Engine/source/forest/forest.cpp @@ -260,7 +260,9 @@ void Forest::setTransform( const MatrixF &mat ) void Forest::_onZoningChanged( SceneZoneSpaceManager *zoneManager ) { - if ( mData == NULL || zoneManager != getSceneManager()->getZoneManager() ) + const SceneManager* sm = getSceneManager(); + + if (mData == NULL || (sm != NULL && sm->getZoneManager() != NULL && zoneManager != sm->getZoneManager())) return; mZoningDirty = true; diff --git a/Engine/source/terrain/terrData.cpp b/Engine/source/terrain/terrData.cpp index 7abfbc867..d097a197a 100644 --- a/Engine/source/terrain/terrData.cpp +++ b/Engine/source/terrain/terrData.cpp @@ -461,7 +461,9 @@ void TerrainBlock::_updateBounds() void TerrainBlock::_onZoningChanged( SceneZoneSpaceManager *zoneManager ) { - if ( mCell == NULL || zoneManager != getSceneManager()->getZoneManager() ) + const SceneManager* sm = getSceneManager(); + + if (mCell == NULL || (sm != NULL && sm->getZoneManager() != NULL && zoneManager != sm->getZoneManager())) return; mZoningDirty = true;