This matches https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/using-a-d… and, as far as I can see, is the intended idea and what the comment implies.
The idea, as I understand it, is to avoid a TOCTOU hazard by first setting the cancel routine and only afterwards checking the Cancel flag. If it's set while the previous cancel routine (returned by the second IoSetCancelRoutine call) is not NULL, that means it's been enabled before our first IoSetCancelRoutine call and we have to take care of it.
Conversely, if there is no previous routine set, it must mean that ntoskrnl has removed the routine we just set and it's going to call it, or has already called it (and it's probably now trying to acquire the spinlock). In that case we leave handling the cancellation to the routine and do nothing special here.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8930
Salvage tests and fix a leak found in another review: see https://gitlab.winehq.org/wine/wine/-/merge_requests/897#note_9175 points 1 and 2. 3. is why !897 was reverted.
This does not contain the (incorrect) changes to VariantCopyInd, but instead fixes the leak identified in VariantClear (VT_RECORD needs to free pvRecord), and the wrong allocator being used in VariantCopy (it should have been IMalloc, rather than `HeapAlloc`, as shown by the fact IMallocSpy observes these allocations).
This also cleans up some dubious behavior by the test IRecordInfoImpl, which was modifying a VARIANT that it did not own or receive as an argument in the middle of VariantClear. This was likely undefined behavior, and in any case concealed the heap leak.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1035
If the canonical hostname was "localhost", the address info was not
freed.
Don't bother checking whether ai_canonname is NULL because if there is
no canonical name, getaddrinfo must set ai_canonname to the input name.
Fixes: ca5a6d07dc92ba631b178ec175e6b3fd5295e3d6
--
v2: wineboot: Fix a memory leak in create_computer_name_keys.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8918