ProgressBar: Fixed passing fraction==NaN from leading to a crash. (#7451)
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index 74a201a..bc5822f 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -70,6 +70,7 @@
   frames would erroneously close the window. While it is technically a popup issue
   it would generally manifest when fast moving the mouse bottom to top in a sub-menu.
   (#7325, #7287, #7063)
+- ProgressBar: Fixed passing fraction==NaN from leading to a crash. (#7451)
 - Style: Added ImGuiStyleVar_TabBorderSize, ImGuiStyleVar_TableAngledHeadersAngle for
   consistency. (#7411) [@cfillion]
 - DrawList: Added AddConcavePolyFilled(), PathFillConcave() concave filling. (#760) [@thedmd]
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index d83a080..f1ffbf0 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -1288,12 +1288,15 @@
     if (!ItemAdd(bb, 0))
         return;
 
-    // Render
+    // Out of courtesy we accept a NaN fraction without crashing
     fraction = ImSaturate(fraction);
+    const float fraction_not_nan = (fraction == fraction) ? fraction : 0.0f;
+
+    // Render
     RenderFrame(bb.Min, bb.Max, GetColorU32(ImGuiCol_FrameBg), true, style.FrameRounding);
     bb.Expand(ImVec2(-style.FrameBorderSize, -style.FrameBorderSize));
-    const ImVec2 fill_br = ImVec2(ImLerp(bb.Min.x, bb.Max.x, fraction), bb.Max.y);
-    RenderRectFilledRangeH(window->DrawList, bb, GetColorU32(ImGuiCol_PlotHistogram), 0.0f, fraction, style.FrameRounding);
+    const ImVec2 fill_br = ImVec2(ImLerp(bb.Min.x, bb.Max.x, fraction_not_nan), bb.Max.y);
+    RenderRectFilledRangeH(window->DrawList, bb, GetColorU32(ImGuiCol_PlotHistogram), 0.0f, fraction_not_nan, style.FrameRounding);
 
     // Default displaying the fraction as percentage string, but user can override it
     char overlay_buf[32];