diff options
| author | Shauren <shauren.trinity@gmail.com> | 2017-02-26 15:00:46 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-02-26 15:00:46 +0100 |
| commit | bc2380e105404535ebb89b6a379ba9bc9454acfc (patch) | |
| tree | 0ba852c56d2813b8a23bae763c7301676d5e394e /src/server/shared | |
| parent | 047c6f072ba08e0a939cd29d268bb687a7ea7a85 (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.cpp | 24 | ||||
| -rw-r--r-- | src/server/shared/DataStores/DB2Store.h | 2 |
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; |
