diff --git a/imgui.cpp b/imgui.cpp index 51ee2e66..6f87da2b 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -8264,6 +8264,16 @@ ImFont::ImFont() Clear(); } +ImFont::~ImFont() +{ + // Invalidate active font so that the user gets a clear crash instead of a dangling pointer. + // If you want to delete fonts you need to do it between Render() and NewFrame(). + ImGuiState& g = *GImGui; + if (g.Font == this) + g.Font = NULL; + Clear(); +} + void ImFont::Clear() { FontSize = 0.0f; diff --git a/imgui.h b/imgui.h index d237e09e..8035090e 100644 --- a/imgui.h +++ b/imgui.h @@ -998,7 +998,7 @@ struct ImFont // Methods IMGUI_API ImFont(); - IMGUI_API ~ImFont() { Clear(); } + IMGUI_API ~ImFont(); IMGUI_API void Clear(); IMGUI_API void BuildLookupTable(); IMGUI_API const Glyph* FindGlyph(unsigned short c) const;