On Tue Feb 14 16:20:32 2023 +0000, Jacek Caban wrote:
> This will work, but while reviewing this I noticed that current handling
> of VT_R4 and VT_R8 is not exactly right, overflow checks don't really
> make sense. Fixing that allows to simplify VT_BSTR case a bit. Please
> take a look at https://gitlab.winehq.org/jacek/wine/-/commits/varabs/
> and if it looks good to you, update MR with that branch (it also
> contains BSTR allocation fixup).
Thanks. Hopefully I rebased properly!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2175#note_24086
While working in vbscript, I noticed abs on a `BSTR` value with a positive number would come back with an invalid value.
Given the following script:
```
Dim x
x = "30000"
Debug.Print "x" & "=" & abs(x)
```
Outputs:
```
Script.Print 'x=3.08221696253945E-314'
```
After debugging, `pVarIn` gets the R8 value but is never shallow copied into `pVarOut`.
I'm not sure how to write a test case in `oleaut32`, so I included a test case in `vbscript`.
--
v7: oleaut32: fix VarAbs function for BSTR with positive values
oleaut32: Fix VarAbs function for BSTR with positive values.
oleaut32: Remove overflow check for VT_R4 and VT_R8 in VarAbs.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2175
Today, test_RtlUniform() skips almost all of its tests on Windows Vista
or later. The skipped tests only succeed in Windows XP, and fail on
Windows Vista or later.
This is because RtlUniform()'s behavior has changed, presumably due to a
bug fix shipped in Windows Vista. It appears that RtlUniform, a linear
congruential generator, could overflow before computing the modulo in
WindoWs XP. This is no longer the case in Windows Vista or later.
Meanwhile, we no longer support Windows XP behavior and thus do not test
for it regularly; therefore, the tests are obsolete as of 2023.
Remove obsolete tests that no longer work with any of the Windows
versions actively tested by WineHQ (as of 2023), and replace them with
updated tests that works in the Windows versions from Vista up to 10.
Also, fix Wine's RtlUniform() to match the new behavior accordingly.
--
v10: ntdll: Fix integer overflow in RtlUniform.
https://gitlab.winehq.org/wine/wine/-/merge_requests/821