Module: wine Branch: master Commit: 11516e7cee7499b78c6cbc0f008fce095e17d6f9 URL: https://gitlab.winehq.org/wine/wine/-/commit/11516e7cee7499b78c6cbc0f008fce0...
Author: Jeff Smith whydoubt@gmail.com Date: Wed Aug 2 22:39:28 2023 -0500
d3dx10_43/tests: Use compare_uint() in compare_float() instead of abs().
The result of abs(INT_MIN) is INT_MIN, which breaks the ulps comparison.
---
dlls/d3dx10_43/tests/d3dx10.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx10_43/tests/d3dx10.c b/dlls/d3dx10_43/tests/d3dx10.c index 8257ab1e919..e9c215d3c45 100644 --- a/dlls/d3dx10_43/tests/d3dx10.c +++ b/dlls/d3dx10_43/tests/d3dx10.c @@ -1120,6 +1120,13 @@ static ULONG get_refcount(void *iface) return IUnknown_Release(unknown); }
+static BOOL compare_uint(unsigned int x, unsigned int y, unsigned int max_diff) +{ + unsigned int diff = x > y ? x - y : y - x; + + return diff <= max_diff; +} + static BOOL compare_float(float f, float g, unsigned int ulps) { int x = *(int *)&f; @@ -1130,10 +1137,7 @@ static BOOL compare_float(float f, float g, unsigned int ulps) if (y < 0) y = INT_MIN - y;
- if (abs(x - y) > ulps) - return FALSE; - - return TRUE; + return compare_uint(x, y, ulps); }
static char *get_str_a(const WCHAR *wstr)