15 Aug
2023
15 Aug
'23
7:49 p.m.
Evan Tang (@etang-cw) commented about libs/vkd3d/resource.c:
for (; i != UINT_MAX; i = next) { src = &descriptors[i]; - next = (int)src->next >> 1; + next = vkd3d_atomic_exchange(&src->next, 0); + next = (int)next >> 1;
+ /* A race exists here between updating src->next and getting the current object. The best + * we can do is get the object last, which may result in a harmless rewrite later. */ u.object = d3d12_desc_get_object_ref(src, device);
if (!u.object) { vkd3d_atomic_exchange(&src->next, 0);
Should this be deleted as well? -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/292#note_42376