diff --git a/imgui.cpp b/imgui.cpp index faf8ae690..e97f5e6fb 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -8739,8 +8739,15 @@ void ImGui::UpdateCurrentFontSize(float restore_font_size_after_scaling) ImGuiWindow* window = g.CurrentWindow; g.Style.FontSizeBase = g.FontSizeBase; + + // Early out to avoid hidden window keeping bakes referenced and out of GC reach. + // However this would leave a pretty subtle and damning error surface area if g.FontBaked was mismatching, so for now we null it. if (window != NULL && window->SkipItems) - return; + if (g.CurrentTable == NULL || g.CurrentTable->CurrentColumn != -1) // See 8465#issuecomment-2951509561. Ideally the SkipItems=true in tables would be amended with extra data. + { + g.FontBaked = NULL; + return; + } // Restoring is pretty much only used by PopFont()/PopFontSize() float final_size = (restore_font_size_after_scaling > 0.0f) ? restore_font_size_after_scaling : 0.0f;