Check for divide by near zero (#22876)

This commit is contained in:
Kevin Zheng
2023-12-22 17:10:33 -08:00
committed by GitHub
parent e559c080ff
commit 99d6aff7be
2 changed files with 6 additions and 3 deletions

View File

@@ -123,7 +123,7 @@ namespace Content.Server.Atmos.EntitySystems
var receiverHeatCapacity = GetHeatCapacity(receiver); var receiverHeatCapacity = GetHeatCapacity(receiver);
var giverHeatCapacity = GetHeatCapacity(giver); var giverHeatCapacity = GetHeatCapacity(giver);
var combinedHeatCapacity = receiverHeatCapacity + giverHeatCapacity; var combinedHeatCapacity = receiverHeatCapacity + giverHeatCapacity;
if (combinedHeatCapacity > 0f) if (combinedHeatCapacity > Atmospherics.MinimumHeatCapacity)
{ {
receiver.Temperature = (GetThermalEnergy(giver, giverHeatCapacity) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity; receiver.Temperature = (GetThermalEnergy(giver, giverHeatCapacity) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity;
} }
@@ -167,7 +167,7 @@ namespace Content.Server.Atmos.EntitySystems
sourceHeatCapacity ??= GetHeatCapacity(source); sourceHeatCapacity ??= GetHeatCapacity(source);
var receiverHeatCapacity = GetHeatCapacity(receiver); var receiverHeatCapacity = GetHeatCapacity(receiver);
var combinedHeatCapacity = receiverHeatCapacity + sourceHeatCapacity.Value * fraction; var combinedHeatCapacity = receiverHeatCapacity + sourceHeatCapacity.Value * fraction;
if (combinedHeatCapacity > 0f) if (combinedHeatCapacity > Atmospherics.MinimumHeatCapacity)
receiver.Temperature = (GetThermalEnergy(source, sourceHeatCapacity.Value * fraction) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity; receiver.Temperature = (GetThermalEnergy(source, sourceHeatCapacity.Value * fraction) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity;
} }
} }

View File

@@ -113,7 +113,10 @@ public sealed class GenericGasReactionSystem : EntitySystem
} }
float newHeatCapacity = _atmosphere.GetHeatCapacity(mix, true); float newHeatCapacity = _atmosphere.GetHeatCapacity(mix, true);
mix.Temperature = (initialE + reactionE)/newHeatCapacity; if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
{
mix.Temperature = (initialE + reactionE)/newHeatCapacity;
}
if (reactionE > 0) if (reactionE > 0)
{ {
var location = holder as TileAtmosphere; var location = holder as TileAtmosphere;