Not completely sure if it's worth having for 8.0, but opening this to share the target I'm trying to reach.
--
v11: ntdll: Add a heap thread affinity and per-affinity bin group cache.
ntdll: Use atomics and lock-free list for bin groups.
ntdll: Implement Low Fragmentation Heap frontend.
ntdll: Split heap_resize_block into heap_resize_(block|large) helpers.
ntdll: Count allocations and automatically enable LFH.
ntdll: Increase heap block tail_size capacity to 16 bits.
ntdll: Implement HeapCompatibilityInformation.
ntdll: Fix HeapWalk with empty uncommitted consecutive subheaps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1628
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