From f5be82a60ee489ccf5e8b485e30fd7ee5409c2fe Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Sat, 10 Jan 2026 18:58:38 +0000 Subject: [PATCH] Fix division by zero in logN function --- .../GameClient/GUI/GUICallbacks/W3DControlBar.cpp | 8 +++++++- .../GameClient/GUI/GUICallbacks/W3DControlBar.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp index a69e81a3a90..36299637e52 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp @@ -98,7 +98,13 @@ void W3DRightHUDDraw( GameWindow *window, WinInstanceData *instData ) Real logN(Real value, Real logBase) { - return (Real)log10(value)/ log10(logBase); + Real logBaseValue = (Real)log10(logBase); + // Prevent division by zero when logBase is 1 (log10(1) = 0) + if (logBaseValue == 0.0f) + { + return 0.0f; + } + return (Real)log10(value) / logBaseValue; } //------------------------------------------------------------------------------------------------- diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp index eb8785fb7f6..b18a8f43e51 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/GUI/GUICallbacks/W3DControlBar.cpp @@ -98,7 +98,13 @@ void W3DRightHUDDraw( GameWindow *window, WinInstanceData *instData ) Real logN(Real value, Real logBase) { - return (Real)log10(value)/ log10(logBase); + Real logBaseValue = (Real)log10(logBase); + // Prevent division by zero when logBase is 1 (log10(1) = 0) + if (logBaseValue == 0.0f) + { + return 0.0f; + } + return (Real)log10(value) / logBaseValue; } //-------------------------------------------------------------------------------------------------