aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-24 18:57:13 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-24 18:57:13 +0200
commit8f2c5413d7a3775a304c793653d41caabf3ba997 (patch)
tree8e17fde47807585eef0f9b7c7a1cc1b7ce061438 /src
parent67dc22849797e4701004b4e456f28c033d762f19 (diff)
Core/DataStores: Fixed unsigned underflow in TaxiMask constructor happening before TaxiNodes.db2 is loaded
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 4bff5ce4d23..425fb7ed91d 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -1516,6 +1516,11 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul
_wmoAreaTableLookup[WMOAreaTableKey(entry->WmoID, entry->NameSetID, entry->WmoGroupID)] = entry;
// Initialize global taxinodes mask
+ // reinitialize internal storage for globals after loading TaxiNodes.db2
+ sTaxiNodesMask = {};
+ sHordeTaxiNodesMask = {};
+ sAllianceTaxiNodesMask = {};
+ sOldContinentsNodesMask = {};
// include existed nodes that have at least single not spell base (scripted) path
for (TaxiNodesEntry const* node : sTaxiNodesStore)
{
@@ -3388,7 +3393,8 @@ bool ItemLevelSelectorQualityEntryComparator::Compare(ItemLevelSelectorQualityEn
TaxiMask::TaxiMask()
{
- _data.resize(((sTaxiNodesStore.GetNumRows() - 1) / (sizeof(value_type) * 8)) + 1, 0);
+ if (sTaxiNodesStore.GetNumRows())
+ _data.resize(((sTaxiNodesStore.GetNumRows() - 1) / (sizeof(value_type) * 8)) + 1, 0);
}
bool DB2Manager::FriendshipRepReactionEntryComparator::Compare(FriendshipRepReactionEntry const* left, FriendshipRepReactionEntry const* right)