Esme Povirk (@madewokherd) commented about dlls/uiautomationcore/uia_event.c:
+ struct uia_event_map_entry *event_entry; + + EnterCriticalSection(&event_map_cs); + + if (!(event_entry = uia_get_event_map_entry_for_event(event->event_id))) + { + if (!(event_entry = heap_alloc_zero(sizeof(*event_entry)))) + { + LeaveCriticalSection(&event_map_cs); + return E_OUTOFMEMORY; + } + + event_entry->event_id = event->event_id; + list_init(&event_entry->events_list); + + if (InterlockedIncrement(&uia_event_map.event_count) == 1) Accesses to this field are gated by `event_map_cs` so I don't think the Interlocked calls are necessary.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/2988#note_35344