diff --git a/imgui.cpp b/imgui.cpp index 4207012ed..57ea52195 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2388,11 +2388,14 @@ ImGuiID ImHashStr(const char* data_p, size_t data_size, ImGuiID seed) } // Skip to the "###" marker if any. We don't skip past to match the behavior of GetID() +// FIXME-OPT: This is not designed to be optimal. Use with care. const char* ImHashSkipUncontributingPrefix(const char* label) { - if (const char* p = strstr(label, "###")) // FIXME: Should loop. - label = p; - return label; + const char* result = label; + while (unsigned char c = *label++) + if (c == '#' && label[0] == '#' && label[1] == '#') + result = label - 1; + return result; } //-----------------------------------------------------------------------------