aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-02-26 15:00:46 +0100
committerShauren <shauren.trinity@gmail.com>2017-02-26 15:00:46 +0100
commitbc2380e105404535ebb89b6a379ba9bc9454acfc (patch)
tree0ba852c56d2813b8a23bae763c7301676d5e394e /src/server/shared
parent047c6f072ba08e0a939cd29d268bb687a7ea7a85 (diff)
Core/DataStores: Fixed Meta->Types/TypesString mixup causing crashes when trying to send hotfix for nonlocalized string
Closes #18882 (for real this time)
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/DataStores/DB2StorageLoader.cpp24
-rw-r--r--src/server/shared/DataStores/DB2Store.h2
2 files changed, 17 insertions, 9 deletions
diff --git a/src/server/shared/DataStores/DB2StorageLoader.cpp b/src/server/shared/DataStores/DB2StorageLoader.cpp
index 6b912e7dde1..11caca97afb 100644
--- a/src/server/shared/DataStores/DB2StorageLoader.cpp
+++ b/src/server/shared/DataStores/DB2StorageLoader.cpp
@@ -396,7 +396,7 @@ char* DB2FileLoaderRegularImpl::AutoProduceData(uint32& records, char**& indexTa
break;
}
default:
- ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->Meta->Types[x], fileName);
+ ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->TypesString[x], fileName);
break;
}
++fieldIndex;
@@ -481,7 +481,7 @@ char* DB2FileLoaderRegularImpl::AutoProduceStrings(char* dataTable, uint32 local
break;
}
default:
- ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->Meta->Types[x], fileName);
+ ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->TypesString[x], fileName);
break;
}
++fieldIndex;
@@ -619,10 +619,12 @@ char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& maxId, char**& indexTable
std::size_t fieldOffset = 0;
uint32 stringFieldOffset = 0;
+ uint32 fieldIndex = 0;
if (!_loadInfo->Meta->HasIndexFieldInData())
{
*((uint32*)(&dataTable[offset])) = y + _header->MinId;
offset += 4;
+ ++fieldIndex;
}
for (uint32 x = 0; x < _header->FieldCount; ++x)
@@ -630,7 +632,7 @@ char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& maxId, char**& indexTable
uint16 fieldBytes = 4 - fields[x].UnusedBits / 8;
for (uint32 z = 0; z < _loadInfo->Meta->ArraySizes[x]; ++z)
{
- switch (_loadInfo->Meta->Types[x])
+ switch (_loadInfo->TypesString[fieldIndex])
{
case FT_FLOAT:
{
@@ -724,9 +726,10 @@ char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& maxId, char**& indexTable
break;
}
default:
- ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->Meta->Types[x], fileName);
+ ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->TypesString[x], fileName);
break;
}
+ ++fieldIndex;
}
}
@@ -777,15 +780,19 @@ char* DB2FileLoaderSparseImpl::AutoProduceStrings(char* dataTable, uint32 locale
if (!offsets[y].FileOffset || !offsets[y].RecordSize)
continue;
+ uint32 fieldIndex = 0;
if (!_loadInfo->Meta->HasIndexFieldInData())
+ {
offset += 4;
+ ++fieldIndex;
+ }
std::size_t fieldOffset = 0;
for (uint32 x = 0; x < _header->FieldCount; ++x)
{
for (uint32 z = 0; z < _loadInfo->Meta->ArraySizes[x]; ++z)
{
- switch (_loadInfo->Meta->Types[x])
+ switch (_loadInfo->TypesString[fieldIndex])
{
case FT_FLOAT:
offset += 4;
@@ -820,9 +827,10 @@ char* DB2FileLoaderSparseImpl::AutoProduceStrings(char* dataTable, uint32 locale
break;
}
default:
- ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->Meta->Types[x], fileName);
+ ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->TypesString[x], fileName);
break;
}
+ ++fieldIndex;
}
}
}
@@ -958,7 +966,7 @@ char* DB2DatabaseLoader::Load(uint32& records, char**& indexTable, char*& string
break;
}
default:
- ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->Meta->Types[x], _storageName.c_str());
+ ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->TypesString[x], _storageName.c_str());
break;
}
++f;
@@ -1059,7 +1067,7 @@ void DB2DatabaseLoader::LoadStrings(uint32 locale, uint32 records, char** indexT
offset += sizeof(char*);
break;
default:
- ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->Meta->Types[x], _storageName.c_str());
+ ASSERT(false, "Unknown format character '%c' found in %s meta", _loadInfo->TypesString[x], _storageName.c_str());
break;
}
++fieldIndex;
diff --git a/src/server/shared/DataStores/DB2Store.h b/src/server/shared/DataStores/DB2Store.h
index 2b2c71e2324..c12b83102a2 100644
--- a/src/server/shared/DataStores/DB2Store.h
+++ b/src/server/shared/DataStores/DB2Store.h
@@ -70,7 +70,7 @@ protected:
{
for (uint32 a = 0; a < _loadInfo.Meta->ArraySizes[i]; ++a)
{
- switch (_loadInfo.Meta->Types[i])
+ switch (_loadInfo.TypesString[i])
{
case FT_INT:
buffer << *(uint32*)entry;