diff --git a/application/editoruipanels.cpp b/application/editoruipanels.cpp index 966f14fb..db85b2c4 100644 --- a/application/editoruipanels.cpp +++ b/application/editoruipanels.cpp @@ -237,7 +237,7 @@ void itemproperties_panel::update_group() for (auto const &name : names) { // NOTE: first calculation runs over two instances of the same name, but, eh - auto const prefixlength{len_common_prefix(m_groupprefix, name)}; + auto const prefixlength{len_common_prefix(m_groupprefix, name.get())}; if (prefixlength > 0) { m_groupprefix = m_groupprefix.substr(0, prefixlength); diff --git a/scripting/PyInt.cpp b/scripting/PyInt.cpp index 007f732a..1beacf39 100644 --- a/scripting/PyInt.cpp +++ b/scripting/PyInt.cpp @@ -412,7 +412,7 @@ auto python_taskqueue::fetch_renderer(std::string const Renderer) -> PyObject * return lookup->second; } // try to load specified renderer class - auto const path{substr_path(Renderer)}; + std::string const path{substr_path(Renderer)}; auto const file{Renderer.substr(path.size())}; PyObject *renderer{nullptr}; PyObject *rendererarguments{nullptr}; diff --git a/utilities/utilities.cpp b/utilities/utilities.cpp index 269468d5..23160586 100644 --- a/utilities/utilities.cpp +++ b/utilities/utilities.cpp @@ -398,13 +398,10 @@ std::string_view substr_path(std::string const &Filename) } // returns length of common prefix between two provided strings -std::ptrdiff_t len_common_prefix(std::string const &Left, std::string const &Right) +std::ptrdiff_t len_common_prefix(std::string_view a, std::string_view b) { - - auto const *left{Left.data()}; - auto const *right{Right.data()}; - // compare up to the length of the shorter string - return (Right.size() <= Left.size() ? std::distance(right, std::mismatch(right, right + Right.size(), left).first) : std::distance(left, std::mismatch(left, left + Left.size(), right).first)); + auto [it1, it2] = std::ranges::mismatch(a, b); + return std::distance(a.begin(), it1); } // returns true if provided string ends with another provided string diff --git a/utilities/utilities.h b/utilities/utilities.h index 2b1e61c7..2dcb4010 100644 --- a/utilities/utilities.h +++ b/utilities/utilities.h @@ -224,7 +224,7 @@ void replace_slashes(std::string &Filename); std::string_view substr_path(std::string const &Filename); // returns common prefix of two provided strings -std::ptrdiff_t len_common_prefix(std::string const &Left, std::string const &Right); +std::ptrdiff_t len_common_prefix(std::string_view a, std::string_view b); // returns true if provided string ends with another provided string bool ends_with(std::string_view String, std::string_view Suffix);