Module: wine Branch: stable Commit: 873e41ba1aea526ea8a3afb82abd98a5b2a7416e URL: https://gitlab.winehq.org/wine/wine/-/commit/873e41ba1aea526ea8a3afb82abd98a...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Feb 14 16:56:40 2023 +0100
oleaut32: Remove overflow check for VT_R4 and VT_R8 in VarAbs.
(cherry picked from commit 23f0df42016011535f19ffff40f0a0393a8e6cd8)
---
dlls/oleaut32/tests/vartest.c | 2 ++ dlls/oleaut32/variant.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/oleaut32/tests/vartest.c b/dlls/oleaut32/tests/vartest.c index cdbb836b041..4e9c892e37e 100644 --- a/dlls/oleaut32/tests/vartest.c +++ b/dlls/oleaut32/tests/vartest.c @@ -3121,6 +3121,8 @@ static void test_VarAbs(void) VARABS(R4,-1,R4,1); VARABS(R8,1,R8,1); VARABS(R8,-1,R8,1); + VARABS(R4,1.40129846432481707e-45,R4,1.40129846432481707e-45); + VARABS(R8,4.94065645841246544e-324,R8,4.94065645841246544e-324); VARABS(DATE,1,DATE,1); VARABS(DATE,-1,DATE,1); V_VT(&v) = VT_CY; diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index 885082cc659..bbfc1b2d952 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -4369,7 +4369,9 @@ HRESULT WINAPI VarAbs(LPVARIANT pVarIn, LPVARIANT pVarOut) case VT_INT: ABS_CASE(I4,I4_MIN); ABS_CASE(I8,I8_MIN); - ABS_CASE(R4,R4_MIN); + case VT_R4: + if (V_R4(pVarOut) < 0.0) V_R4(pVarOut) = -V_R4(pVarOut); + break; case VT_BSTR: hRet = VarR8FromStr(V_BSTR(pVarIn), LOCALE_USER_DEFAULT, 0, &V_R8(&varIn)); if (FAILED(hRet)) @@ -4378,7 +4380,9 @@ HRESULT WINAPI VarAbs(LPVARIANT pVarIn, LPVARIANT pVarOut) pVarIn = &varIn; /* Fall through ... */ case VT_DATE: - ABS_CASE(R8,R8_MIN); + case VT_R8: + if (V_R8(pVarOut) < 0.0) V_R8(pVarOut) = -V_R8(pVarOut); + break; case VT_CY: hRet = VarCyAbs(V_CY(pVarIn), & V_CY(pVarOut)); break;