From 4ab1d61f29ed1cefc7cd311a2aaae032a42a87a8 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 19 Dec 2024 19:31:10 +0000 Subject: [PATCH] Defensively copy ResourceReference as it is a ptr to container element --- renderdoc/driver/shaders/dxil/dxil_disassemble.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index c6a5df1df..51c4686ad 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -5396,14 +5396,15 @@ void Program::ParseReferences(const DXBC::Reflection *reflection) // If the underlying handle points to a known resource then duplicate the resource // and register it as resultIdStr DXILDebug::Id handleId = GetSSAId(inst.args[1]); - const ResourceReference *resRef = GetResourceReference(handleId); + const ResourceReference *pResRef = GetResourceReference(handleId); rdcstr baseResource = GetArgId(inst, 1); rdcstr resBaseName = "typed_descriptor"; - if(resRef) + if(pResRef) { - resBaseName = resRef->resourceBase.name; + const ResourceReference resRef = *pResRef; + resBaseName = resRef.resourceBase.name; m_ResourceByIdHandles[resultId] = m_ResourceByIdHandles.size(); - m_ResourceReferences.push_back(*resRef); + m_ResourceReferences.push_back(resRef); } uint32_t annotateHandleCount = m_ResourceAnnotateCounts[resBaseName]; rdcstr resName = "__" + resBaseName + "_" + ToStr(annotateHandleCount);