From 91608dd7ad9479a902c99a53196c740514ddd8bd Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 19 Jul 2026 19:35:02 +0400 Subject: [PATCH 1/3] fix(w3d): guard against null bold font in W3DDisplayString::setFont --- .../Source/W3DDevice/GameClient/W3DDisplayString.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp index f8f5817d857..409052f36f3 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp @@ -306,7 +306,12 @@ void W3DDisplayString::setFont( GameFont *font ) // set the font in our renderer m_textRenderer.Set_Font( static_cast(m_font->fontData) ); - m_textRendererHotKey.Set_Font( static_cast(TheFontLibrary->getFont(font->nameString,font->pointSize, TRUE)->fontData) ); + // TheSuperHackers @fix bobtista 19/07/2026 Guard against null bold font to prevent crash when font loading fails + GameFont *boldFont = TheFontLibrary->getFont( font->nameString, font->pointSize, TRUE ); + if( boldFont != nullptr ) + { + m_textRendererHotKey.Set_Font( static_cast(boldFont->fontData) ); + } // recompute extents for text with new font computeExtents(); From c99e3a8de5089796e6282670f0a87eb3c48ee541 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 19 Jul 2026 19:35:50 +0400 Subject: [PATCH 2/3] fix(w3d): replicate null bold font guard to Generals --- .../Source/W3DDevice/GameClient/W3DDisplayString.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp index 1e2fb6dd814..615fef178e9 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp @@ -306,7 +306,12 @@ void W3DDisplayString::setFont( GameFont *font ) // set the font in our renderer m_textRenderer.Set_Font( static_cast(m_font->fontData) ); - m_textRendererHotKey.Set_Font( static_cast(TheFontLibrary->getFont(font->nameString,font->pointSize, TRUE)->fontData) ); + // TheSuperHackers @fix bobtista 19/07/2026 Guard against null bold font to prevent crash when font loading fails + GameFont *boldFont = TheFontLibrary->getFont( font->nameString, font->pointSize, TRUE ); + if( boldFont != nullptr ) + { + m_textRendererHotKey.Set_Font( static_cast(boldFont->fontData) ); + } // recompute extents for text with new font computeExtents(); From b3227a32d523edc3817e449fbf690b5996131b09 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Thu, 23 Jul 2026 21:33:28 +0300 Subject: [PATCH 3/3] fix(w3d): Simplify null bold font guard --- .../Source/W3DDevice/GameClient/W3DDisplayString.cpp | 4 +--- .../Source/W3DDevice/GameClient/W3DDisplayString.cpp | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp index 615fef178e9..eafcf5fe6d6 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp @@ -306,9 +306,7 @@ void W3DDisplayString::setFont( GameFont *font ) // set the font in our renderer m_textRenderer.Set_Font( static_cast(m_font->fontData) ); - // TheSuperHackers @fix bobtista 19/07/2026 Guard against null bold font to prevent crash when font loading fails - GameFont *boldFont = TheFontLibrary->getFont( font->nameString, font->pointSize, TRUE ); - if( boldFont != nullptr ) + if( GameFont *boldFont = TheFontLibrary->getFont( font->nameString, font->pointSize, TRUE ) ) { m_textRendererHotKey.Set_Font( static_cast(boldFont->fontData) ); } diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp index 409052f36f3..c8a4b78ea59 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplayString.cpp @@ -306,9 +306,7 @@ void W3DDisplayString::setFont( GameFont *font ) // set the font in our renderer m_textRenderer.Set_Font( static_cast(m_font->fontData) ); - // TheSuperHackers @fix bobtista 19/07/2026 Guard against null bold font to prevent crash when font loading fails - GameFont *boldFont = TheFontLibrary->getFont( font->nameString, font->pointSize, TRUE ); - if( boldFont != nullptr ) + if( GameFont *boldFont = TheFontLibrary->getFont( font->nameString, font->pointSize, TRUE ) ) { m_textRendererHotKey.Set_Font( static_cast(boldFont->fontData) ); }