From f8b4cf0fc41b40601d90a44bd6d348a6c1e11fe5 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Sun, 1 Sep 2019 13:57:04 -0400 Subject: Check for exact equality before approximate equality --- modules/mono/glue/Managed/Files/Mathf.cs | 5 +++++ modules/mono/glue/Managed/Files/MathfEx.cs | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'modules/mono/glue') diff --git a/modules/mono/glue/Managed/Files/Mathf.cs b/modules/mono/glue/Managed/Files/Mathf.cs index 15adf0a13b..ce34cd6a99 100644 --- a/modules/mono/glue/Managed/Files/Mathf.cs +++ b/modules/mono/glue/Managed/Files/Mathf.cs @@ -158,6 +158,11 @@ namespace Godot public static bool IsEqualApprox(real_t a, real_t b) { + // Check for exact equality first, required to handle "infinity" values. + if (a == b) { + return true; + } + // Then check for approximate equality. real_t tolerance = Epsilon * Abs(a); if (tolerance < Epsilon) { tolerance = Epsilon; diff --git a/modules/mono/glue/Managed/Files/MathfEx.cs b/modules/mono/glue/Managed/Files/MathfEx.cs index b96f01bc2e..6cffc7f01d 100644 --- a/modules/mono/glue/Managed/Files/MathfEx.cs +++ b/modules/mono/glue/Managed/Files/MathfEx.cs @@ -48,7 +48,12 @@ namespace Godot public static bool IsEqualApprox(real_t a, real_t b, real_t tolerance) { + // Check for exact equality first, required to handle "infinity" values. + if (a == b) { + return true; + } + // Then check for approximate equality. return Abs(a - b) < tolerance; } } -} \ No newline at end of file +} -- cgit v1.2.3