From 99d6aff7be50084d45c6fac766cddf97b2fb526b Mon Sep 17 00:00:00 2001 From: Kevin Zheng Date: Fri, 22 Dec 2023 17:10:33 -0800 Subject: [PATCH] Check for divide by near zero (#22876) --- Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs | 4 ++-- .../Atmos/EntitySystems/GenericGasReactionSystem.cs | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs index 909ec5ec9c..8506b4cd32 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs @@ -123,7 +123,7 @@ namespace Content.Server.Atmos.EntitySystems var receiverHeatCapacity = GetHeatCapacity(receiver); var giverHeatCapacity = GetHeatCapacity(giver); var combinedHeatCapacity = receiverHeatCapacity + giverHeatCapacity; - if (combinedHeatCapacity > 0f) + if (combinedHeatCapacity > Atmospherics.MinimumHeatCapacity) { receiver.Temperature = (GetThermalEnergy(giver, giverHeatCapacity) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity; } @@ -167,7 +167,7 @@ namespace Content.Server.Atmos.EntitySystems sourceHeatCapacity ??= GetHeatCapacity(source); var receiverHeatCapacity = GetHeatCapacity(receiver); var combinedHeatCapacity = receiverHeatCapacity + sourceHeatCapacity.Value * fraction; - if (combinedHeatCapacity > 0f) + if (combinedHeatCapacity > Atmospherics.MinimumHeatCapacity) receiver.Temperature = (GetThermalEnergy(source, sourceHeatCapacity.Value * fraction) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity; } } diff --git a/Content.Server/Atmos/EntitySystems/GenericGasReactionSystem.cs b/Content.Server/Atmos/EntitySystems/GenericGasReactionSystem.cs index a21f85ae95..15c4a33aae 100644 --- a/Content.Server/Atmos/EntitySystems/GenericGasReactionSystem.cs +++ b/Content.Server/Atmos/EntitySystems/GenericGasReactionSystem.cs @@ -113,7 +113,10 @@ public sealed class GenericGasReactionSystem : EntitySystem } float newHeatCapacity = _atmosphere.GetHeatCapacity(mix, true); - mix.Temperature = (initialE + reactionE)/newHeatCapacity; + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + { + mix.Temperature = (initialE + reactionE)/newHeatCapacity; + } if (reactionE > 0) { var location = holder as TileAtmosphere; -- 2.51.2