From fd37959680725e0b3f96a4e91757bcc0d8d60e7e Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Sun, 26 Jun 2022 20:58:24 -0700 Subject: [PATCH] microsoft/clc: Fix test double free in the case of compilation failure Reviewed-by: Bill Kristiansen Part-of: --- src/microsoft/clc/compute_test.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/microsoft/clc/compute_test.cpp b/src/microsoft/clc/compute_test.cpp index 07543e1..1171e37 100644 --- a/src/microsoft/clc/compute_test.cpp +++ b/src/microsoft/clc/compute_test.cpp @@ -848,13 +848,14 @@ ComputeTest::configure(Shader &shader, throw runtime_error("failed to parse spirv!"); } - shader.dxil = std::shared_ptr(new clc_dxil_object{}, [](clc_dxil_object *dxil) + std::unique_ptr dxil(new clc_dxil_object{}); + if (!clc_spirv_to_dxil(compiler_ctx, shader.obj.get(), shader.metadata.get(), "main_test", conf, nullptr, &logger, dxil.get())) + throw runtime_error("failed to compile kernel!"); + shader.dxil = std::shared_ptr(dxil.release(), [](clc_dxil_object *dxil) { clc_free_dxil_object(dxil); delete dxil; }); - if (!clc_spirv_to_dxil(compiler_ctx, shader.obj.get(), shader.metadata.get(), "main_test", conf, nullptr, &logger, shader.dxil.get())) - throw runtime_error("failed to compile kernel!"); } void -- 2.7.4