From 073d860d9b4a69c933da365f77388f96a20cc0e4 Mon Sep 17 00:00:00 2001 From: David Peixotto Date: Wed, 25 Jan 2023 09:33:19 -0800 Subject: [PATCH] [bug] Fix memory leak in dxil validator (#4966) We would create the dxil runtime reflection object but never free it. Using a unique_ptr here does the job. Found by running external tests with appverifier enabled. (cherry picked from commit 661f7cefc24b888f0f71f4eec8c51931c30c01fb) --- lib/HLSL/DxilValidation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/HLSL/DxilValidation.cpp b/lib/HLSL/DxilValidation.cpp index 72bf204a1c..16787eef2f 100644 --- a/lib/HLSL/DxilValidation.cpp +++ b/lib/HLSL/DxilValidation.cpp @@ -5563,7 +5563,7 @@ static void VerifyRDATMatches(_In_ ValidationContext &ValCtx, VerifyBlobPartMatches(ValCtx, PartName, pWriter.get(), pRDATData, RDATSize); // Verify no errors when runtime reflection from RDAT: - RDAT::DxilRuntimeReflection *pReflection = RDAT::CreateDxilRuntimeReflection(); + unique_ptr pReflection(RDAT::CreateDxilRuntimeReflection()); if (!pReflection->InitFromRDAT(pRDATData, RDATSize)) { ValCtx.EmitFormatError(ValidationRule::ContainerPartMatches, { PartName }); return;