From 4df53b41d356a9c80ddf33f00489fa62862ece36 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 25 Sep 2025 16:17:46 +0100 Subject: [PATCH] Delete parents after base objects * This fixes a potential crash deleting an image view after an image, by ensuring a non-owning pointer to the image's resinfo remains valid until after the image view is destroyed. --- renderdoc/core/resource_manager.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/renderdoc/core/resource_manager.cpp b/renderdoc/core/resource_manager.cpp index 4dd78cc2f..80d3f3001 100644 --- a/renderdoc/core/resource_manager.cpp +++ b/renderdoc/core/resource_manager.cpp @@ -213,10 +213,9 @@ void ResourceRecord::Delete(ResourceRecordHandler *mgr) RDCASSERT(ref >= 0); if(ref <= 0) { - for(auto it = Parents.begin(); it != Parents.end(); ++it) - (*it)->Delete(mgr); + rdcarray ParentsToDelete; + Parents.swap(ParentsToDelete); - Parents.clear(); Length = 0; DataPtr = NULL; @@ -226,5 +225,8 @@ void ResourceRecord::Delete(ResourceRecordHandler *mgr) mgr->RemoveResourceRecord(ResID); mgr->DestroyResourceRecord(this); + + for(auto it = ParentsToDelete.begin(); it != ParentsToDelete.end(); ++it) + (*it)->Delete(mgr); } }