Backends: avoid null dereference in metal and osx shutdown (#6385, #6334)
Co-authored-by: Alexander Rath <alex@ist.besonders.cool>
diff --git a/backends/imgui_impl_metal.mm b/backends/imgui_impl_metal.mm
index 00f5c0c..dbf7a87 100644
--- a/backends/imgui_impl_metal.mm
+++ b/backends/imgui_impl_metal.mm
@@ -137,12 +137,13 @@
{
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 bf27478..97c3e8f 100644
--- a/backends/imgui_impl_osx.mm
+++ b/backends/imgui_impl_osx.mm
@@ -477,7 +477,6 @@
{
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 @@
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()