From 9535ee8fd52988b69d851bfdf14c63551f08ade3 Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 21:50:50 +0000 Subject: [PATCH] TextureLoader: Add validity checks for D3DTexture before operations --- .../Source/WWVegas/WW3D2/textureloader.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/textureloader.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/textureloader.cpp index 7d1795a9eb4..bf0dcb987b0 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/textureloader.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/textureloader.cpp @@ -1532,6 +1532,11 @@ bool TextureLoadTaskClass::Begin_Compressed_Load(void) #endif ); + // Verify texture creation succeeded + if (!D3DTexture) { + return false; + } + MipLevelCount = mip_level_count; return true; @@ -1627,6 +1632,11 @@ bool TextureLoadTaskClass::Begin_Uncompressed_Load(void) #endif ); + // Verify texture creation succeeded + if (!D3DTexture) { + return false; + } + return true; } @@ -1777,6 +1787,12 @@ bool TextureLoadTaskClass::Begin_Uncompressed_Load(void) void TextureLoadTaskClass::Lock_Surfaces(void) { + // Defensive check: verify D3DTexture is valid before dereferencing + if (!D3DTexture) { + WWASSERT(D3DTexture); + return; + } + MipLevelCount = D3DTexture->GetLevelCount(); for (unsigned int i = 0; i < MipLevelCount; ++i)