From b63c47dd01c9f3725dae3ff6c5c7228a2d5477a2 Mon Sep 17 00:00:00 2001 From: Frederic Servant <169381+kikou@users.noreply.github.com> Date: Fri, 22 May 2026 13:57:07 +0200 Subject: [PATCH] Fix end-iterator dereference when pruning source-to-targets map The empty() check and subsequent erase ran outside the find() validity guard, dereferencing end() whenever the source was not present in _sourceToTargetsMap. --- libs/render_delegate/render_delegate.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/render_delegate/render_delegate.cpp b/libs/render_delegate/render_delegate.cpp index d8bf3dedc..91c8b862b 100644 --- a/libs/render_delegate/render_delegate.cpp +++ b/libs/render_delegate/render_delegate.cpp @@ -1758,9 +1758,9 @@ bool HdArnoldRenderDelegate::HasPendingChanges(HdRenderIndex* renderIndex, const auto sourceIt = _sourceToTargetsMap.find(source); if (sourceIt != _sourceToTargetsMap.end()) { sourceIt->second.erase(id); - } - if (sourceIt->second.empty()) { - _sourceToTargetsMap.erase(sourceIt); + if (sourceIt->second.empty()) { + _sourceToTargetsMap.erase(sourceIt); + } } // This source primitive needs to be updated auto bits = _dependencyToDirtyBitsMap[{id, source}];