TextUnformatted: Accept null ranges including (NULL,NULL) without asserting. (#3615)
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index c35a170..b21cf97 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -44,6 +44,8 @@
- InputTextMultiline: Fixed label size not being included into window contents rect unless
the whole widget is clipped.
+- TextUnformatted: Accept null ranges including (NULL,NULL) without asserting, in order to conform
+ to common idioms (e.g. passing .data(), .data() + .size() from a null string). (#3615)
- Fonts: imgui_freetype: Fixed crash when FT_Render_Glyph() fails to render a glyph and returns NULL
(which apparently happens with Freetype 2.11). (#4394, #4145?).
- Fonts: Fixed ImFontAtlas::ClearInputData() marking atlas as not built. (#4455, #3487)
diff --git a/imgui.h b/imgui.h
index acb051f..aea7a19 100644
--- a/imgui.h
+++ b/imgui.h
@@ -61,7 +61,7 @@
// Version
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
#define IMGUI_VERSION "1.85 WIP"
-#define IMGUI_VERSION_NUM 18407
+#define IMGUI_VERSION_NUM 18408
#define IMGUI_CHECKVERSION() ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
#define IMGUI_HAS_TABLE
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index 2a760ce..6bfb0fd 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -152,9 +152,13 @@
ImGuiWindow* window = GetCurrentWindow();
if (window->SkipItems)
return;
-
ImGuiContext& g = *GImGui;
- IM_ASSERT(text != NULL);
+
+ // Accept null ranges
+ if (text == text_end)
+ text = text_end = "";
+
+ // Calculate length
const char* text_begin = text;
if (text_end == NULL)
text_end = text + strlen(text); // FIXME-OPT