Index: source/ps/CStrIntern.cpp =================================================================== --- source/ps/CStrIntern.cpp +++ source/ps/CStrIntern.cpp @@ -85,7 +85,7 @@ } }; -static std::unordered_map, StringsKeyHash> g_Strings; +static std::unordered_map g_Strings; #define X(id) CStrIntern str_##id(#id); #define X2(id, str) CStrIntern str_##id(str); @@ -100,14 +100,12 @@ // to be thread-safe, preferably without sacrificing performance.) ENSURE(Threading::IsMainThread()); - std::unordered_map >::iterator it = g_Strings.find(str); + const auto it = g_Strings.find(str); if (it != g_Strings.end()) - return it->second.get(); + return &it->second; - std::shared_ptr internals = std::make_shared(str, len); - g_Strings.insert(std::make_pair(internals->data, internals)); - return internals.get(); + return &g_Strings.insert({str, {str, len}}).first->second; } CStrIntern::CStrIntern()