From 3a3815ebc860e5ba99a7145a74182c9907cc152f Mon Sep 17 00:00:00 2001 From: Harrison Lambeth Date: Wed, 29 Jan 2025 13:38:34 -0700 Subject: [PATCH] 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. --- clay.h | 1 + 1 file changed, 1 insertion(+) diff --git a/clay.h b/clay.h index b7d7ae5..051e04c 100644 --- a/clay.h +++ b/clay.h @@ -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;