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; } //-------------------------------------------------------------------------------------------------