diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp index dcdd550caac..d290263dec8 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp @@ -1154,6 +1154,11 @@ Int HeightMapRenderObjClass::updateBlock(Int x0, Int y0, Int x1, Int y1, WorldH REF_PTR_SET(m_stageOneTexture, pMap->getAlphaTerrainTexture()); } + // Validate vertex buffer arrays before access to prevent race condition during resource cleanup + if (!m_vertexBufferTiles || !m_vertexBufferBackup) { + return -1; + } + Int i,j; DX8VertexBufferClass **pVB; Int originX,originY; diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp index b00eb8bd83e..6602d8aa293 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp @@ -1024,6 +1024,11 @@ Int HeightMapRenderObjClass::updateBlock(Int x0, Int y0, Int x1, Int y1, WorldH REF_PTR_SET(m_stageOneTexture, pMap->getAlphaTerrainTexture()); } + // Validate vertex buffer arrays before access to prevent race condition during resource cleanup + if (!m_vertexBufferTiles || !m_vertexBufferBackup) { + return -1; + } + Int i,j; DX8VertexBufferClass **pVB; Int originX,originY;