Copy elementId in Clay__AddHashMapItem() in case underlying stringId has moved

If the string reference passed to an element id has changed between frames (e.g. moved), then the reference stored in the hash item can become stale. This change makes sure that we're always using the latest value.
This commit is contained in:
Harrison Lambeth 2025-01-29 13:38:34 -07:00 committed by GitHub
parent 5fae7a6249
commit 3a3815ebc8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

1
clay.h
View File

@ -1189,6 +1189,7 @@ Clay_LayoutElementHashMapItem* Clay__AddHashMapItem(Clay_ElementId elementId, Cl
if (hashItem->elementId.id == elementId.id) { // Collision - resolve based on generation
item.nextIndex = hashItem->nextIndex;
if (hashItem->generation <= context->generation) { // First collision - assume this is the "same" element
hashItem->elementId = elementId; // Make sure to copy this across. If the stringId reference has changed, we should update the hash item to use the new one.
hashItem->generation = context->generation + 1;
hashItem->layoutElement = layoutElement;
hashItem->debugData->collision = false;