diff options
author | Ovahlord <dreadkiller@gmx.de> | 2023-09-12 13:06:08 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-09-26 23:18:02 +0200 |
commit | b3dbc8bd6dd920cc8da19f26447b78d94578e4fb (patch) | |
tree | 7cf5f1b81e9714653a9ba5c2dc2ef69e9a604665 | |
parent | d11d992df9e15503c321ffcce566f13923f51508 (diff) |
Core/World: refactored locale detection to resolve a ill-defined for loop warning
-rw-r--r-- | src/server/game/World/World.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 4b31ea6fbff..f080cc537a7 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2247,27 +2247,30 @@ void World::DetectDBCLang() std::string availableLocalsStr; uint8 default_locale = TOTAL_LOCALES; - for (uint8 i = default_locale-1; i < TOTAL_LOCALES; --i) // -1 will be 255 due to uint8 + for (uint8 i = LOCALE_enUS; i < TOTAL_LOCALES; ++i) { if (race->Name[i][0] != '\0') // check by race names { - default_locale = i; + // Mark the first found locale as default locale + if (default_locale == TOTAL_LOCALES) + default_locale = i; + m_availableDbcLocaleMask |= (1 << i); availableLocalsStr += localeNames[i]; availableLocalsStr += " "; } } - if (default_locale != m_lang_confid && m_lang_confid < TOTAL_LOCALES && - (m_availableDbcLocaleMask & (1 << m_lang_confid))) + if (m_availableDbcLocaleMask == 0) { - default_locale = m_lang_confid; + TC_LOG_ERROR("server.loading", "Unable to determine your DBC Locale! (corrupt DBC?)"); + exit(1); } - if (default_locale >= TOTAL_LOCALES) + if (default_locale != m_lang_confid && m_lang_confid < TOTAL_LOCALES && + (m_availableDbcLocaleMask & (1 << m_lang_confid))) { - TC_LOG_ERROR("server.loading", "Unable to determine your DBC Locale! (corrupt DBC?)"); - exit(1); + default_locale = m_lang_confid; } m_defaultDbcLocale = LocaleConstant(default_locale); |