diff --git a/src/dict.cpp b/src/dict.cpp index bac70d57..27c3c93f 100644 --- a/src/dict.cpp +++ b/src/dict.cpp @@ -12,8 +12,8 @@ #include -#include #include +#include #if defined _WIN32 # define strcasecmp _stricmp @@ -80,18 +80,11 @@ int Dict::MakeSlot(std::string const &name) } else { - char const *oldname = e->GetName().c_str(); - if (*oldname == '<') - { - while (*oldname && *oldname != '>') - oldname++; - while (*oldname == '>') - oldname++; - while (*oldname == ' ') - oldname++; - } - - if (!strcasecmp(name.c_str(), oldname)) + auto oldname = e->GetName(); + if (oldname[0] == '<') + oldname = std::regex_replace(oldname, std::regex("<[^>]*> *"), ""); + + if (oldname == name) break; } }