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.