From: Maotong Zhang <zmtong1988(a)gmail.com> --- dlls/oleaut32/variant.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index fbe035a5576..96c4819e534 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -3114,7 +3114,13 @@ HRESULT WINAPI VarAnd(LPVARIANT left, LPVARIANT right, LPVARIANT result) hres = VariantChangeType(&varLeft,&varLeft, VARIANT_LOCALBOOL, VT_BOOL); if (SUCCEEDED(hres) && V_VT(&varLeft) != resvt) + { + if (V_VT(&varLeft) == VT_BSTR) + { + if (d >= I4_MIN && d <= I4_MAX) resvt = VT_I4; + } hres = VariantChangeType(&varLeft,&varLeft,0,resvt); + } if (FAILED(hres)) goto VarAnd_Exit; } @@ -3130,10 +3136,28 @@ HRESULT WINAPI VarAnd(LPVARIANT left, LPVARIANT right, LPVARIANT result) hres = VariantChangeType(&varRight, &varRight, VARIANT_LOCALBOOL, VT_BOOL); if (SUCCEEDED(hres) && V_VT(&varRight) != resvt) + { + if (V_VT(&varRight) == VT_BSTR) + { + if (d >= I4_MIN && d <= I4_MAX) resvt = VT_I4; + } hres = VariantChangeType(&varRight, &varRight, 0, resvt); + } if (FAILED(hres)) goto VarAnd_Exit; } + if (V_VT(&varLeft) != resvt) + { + hres = VariantChangeType(&varLeft, &varLeft, 0, resvt); + if (FAILED(hres)) goto VarAnd_Exit; + } + + if (V_VT(&varRight) != resvt) + { + hres = VariantChangeType(&varRight, &varRight, 0, resvt); + if (FAILED(hres)) goto VarAnd_Exit; + } + V_VT(result) = resvt; switch(resvt) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8635