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)