From 70cca1eac07aa3809bdd3717253c3754a5b7cfcc Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 4 May 2023 08:18:29 -0700 Subject: [PATCH] Backends: avoid null dereference in metal and osx shutdown (#6385, #6334) Co-authored-by: Alexander Rath --- backends/imgui_impl_metal.mm | 5 +++-- backends/imgui_impl_osx.mm | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/backends/imgui_impl_metal.mm b/backends/imgui_impl_metal.mm index 00f5c0c65..dbf7a87f3 100644 --- a/backends/imgui_impl_metal.mm +++ b/backends/imgui_impl_metal.mm @@ -137,12 +137,13 @@ void ImGui_ImplMetal_Shutdown() { ImGui_ImplMetal_Data* bd = ImGui_ImplMetal_GetBackendData(); IM_ASSERT(bd != nullptr && "No renderer backend to shutdown, or already shutdown?"); + ImGui_ImplMetal_DestroyDeviceObjects(); + ImGui_ImplMetal_DestroyBackendData(); + ImGuiIO& io = ImGui::GetIO(); io.BackendRendererName = nullptr; io.BackendRendererUserData = nullptr; io.BackendFlags &= ~ImGuiBackendFlags_RendererHasVtxOffset; - ImGui_ImplMetal_DestroyDeviceObjects(); - ImGui_ImplMetal_DestroyBackendData(); } void ImGui_ImplMetal_NewFrame(MTLRenderPassDescriptor* renderPassDescriptor) diff --git a/backends/imgui_impl_osx.mm b/backends/imgui_impl_osx.mm index bf2747862..97c3e8f78 100644 --- a/backends/imgui_impl_osx.mm +++ b/backends/imgui_impl_osx.mm @@ -477,7 +477,6 @@ void ImGui_ImplOSX_Shutdown() { ImGui_ImplOSX_Data* bd = ImGui_ImplOSX_GetBackendData(); IM_ASSERT(bd != nullptr && "No platform backend to shutdown, or already shutdown?"); - ImGuiIO& io = ImGui::GetIO(); bd->Observer = nullptr; if (bd->Monitor != nullptr) @@ -486,10 +485,12 @@ void ImGui_ImplOSX_Shutdown() bd->Monitor = nullptr; } + ImGui_ImplOSX_DestroyBackendData(); + + ImGuiIO& io = ImGui::GetIO(); io.BackendPlatformName = nullptr; io.BackendPlatformUserData = nullptr; io.BackendFlags &= ~(ImGuiBackendFlags_HasMouseCursors | ImGuiBackendFlags_HasGamepad); - ImGui_ImplOSX_DestroyBackendData(); } static void ImGui_ImplOSX_UpdateMouseCursor()