aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/DataStores/DB2StorageLoader.cpp28
-rw-r--r--src/server/shared/Database/Implementation/HotfixDatabase.cpp1
-rw-r--r--src/server/shared/Database/Implementation/HotfixDatabase.h1
3 files changed, 20 insertions, 10 deletions
diff --git a/src/server/shared/DataStores/DB2StorageLoader.cpp b/src/server/shared/DataStores/DB2StorageLoader.cpp
index 0e72a049a7a..f716b9e805e 100644
--- a/src/server/shared/DataStores/DB2StorageLoader.cpp
+++ b/src/server/shared/DataStores/DB2StorageLoader.cpp
@@ -436,10 +436,17 @@ char* DB2DatabaseLoader::Load(const char* format, int32 preparedStatement, uint3
// each string field at load have array of string for each locale
size_t stringHolderSize = sizeof(char*) * TOTAL_LOCALES;
size_t stringHoldersRecordPoolSize = stringFields * stringHolderSize;
- size_t stringHoldersPoolSize = stringHoldersRecordPoolSize * result->GetRowCount();
if (stringFields)
+ {
+ size_t stringHoldersPoolSize = stringHoldersRecordPoolSize * result->GetRowCount();
stringHolders = new char[stringHoldersPoolSize];
+
+ // DB2 strings expected to have at least empty string
+ for (size_t i = 0; i < stringHoldersPoolSize / sizeof(char*); ++i)
+ ((char const**)stringHolders)[i] = nullStr;
+
+ }
else
stringHolders = nullptr;
@@ -467,21 +474,21 @@ char* DB2DatabaseLoader::Load(const char* format, int32 preparedStatement, uint3
else
tempIndexTable[records++] = &dataTable[offset];
- for (uint32 x = 0; x < fieldCount; x++)
+ for (uint32 f = 0; f < fieldCount; f++)
{
- switch (format[x])
+ switch (format[f])
{
case FT_FLOAT:
- *((float*)(&dataTable[offset])) = fields[x].GetFloat();
+ *((float*)(&dataTable[offset])) = fields[f].GetFloat();
offset += 4;
break;
case FT_IND:
case FT_INT:
- *((int32*)(&dataTable[offset])) = fields[x].GetInt32();
+ *((int32*)(&dataTable[offset])) = fields[f].GetInt32();
offset += 4;
break;
case FT_BYTE:
- *((int8*)(&dataTable[offset])) = fields[x].GetInt8();
+ *((int8*)(&dataTable[offset])) = fields[f].GetInt8();
offset += 1;
break;
case FT_STRING:
@@ -490,11 +497,11 @@ char* DB2DatabaseLoader::Load(const char* format, int32 preparedStatement, uint3
*slot = (LocalizedString*)(&stringHolders[stringHoldersRecordPoolSize * rec++ + stringHolderSize * stringFieldNumInRecord]);
// Value in database in main table field must be for enUS locale
- if (char* str = AddLocaleString(*slot, LOCALE_enUS, fields[x].GetString()))
+ if (char* str = AddLocaleString(*slot, LOCALE_enUS, fields[f].GetString()))
stringPool.push_back(str);
- for (uint32 i = LOCALE_koKR; i < TOTAL_LOCALES; ++i)
- if (char* str = AddLocaleString(*slot, i, fields[localeFieldsOffset + (i - 1) * stringFieldNumInRecord].GetString()))
+ for (uint32 locale = LOCALE_koKR; locale < TOTAL_LOCALES; ++locale)
+ if (char* str = AddLocaleString(*slot, locale, fields[localeFieldsOffset + (locale - 1) + stringFields * stringFieldNumInRecord].GetString()))
stringPool.push_back(str);
++stringFieldNumInRecord;
@@ -527,7 +534,8 @@ char* DB2DatabaseLoader::AddLocaleString(LocalizedString* holder, uint32 locale,
if (!value.empty())
{
char* str = new char[value.length() + 1];
- strcpy(str, value.c_str());
+ memcpy(str, value.c_str(), value.length());
+ str[value.length()] = '\0';
holder->Str[locale] = str;
return str;
}
diff --git a/src/server/shared/Database/Implementation/HotfixDatabase.cpp b/src/server/shared/Database/Implementation/HotfixDatabase.cpp
index ae9ec73c9bc..aa35580676e 100644
--- a/src/server/shared/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/shared/Database/Implementation/HotfixDatabase.cpp
@@ -22,5 +22,6 @@ void HotfixDatabaseConnection::DoPrepareStatements()
if (!m_reconnecting)
m_stmts.resize(MAX_HOTFIXDATABASE_STATEMENTS);
+ PrepareStatement(HOTFIX_SEL_BROADCAST_TEXT, "SELECT * FROM broadcast_text b LEFT JOIN locales_broadcast_text lb ON b.ID = lb.ID", CONNECTION_SYNCH);
PrepareStatement(HOTFIX_SEL_TAXI_PATH_NODE, "SELECT * FROM taxi_path_node", CONNECTION_SYNCH);
}
diff --git a/src/server/shared/Database/Implementation/HotfixDatabase.h b/src/server/shared/Database/Implementation/HotfixDatabase.h
index 5ee09ccd014..56ab6b8c48a 100644
--- a/src/server/shared/Database/Implementation/HotfixDatabase.h
+++ b/src/server/shared/Database/Implementation/HotfixDatabase.h
@@ -42,6 +42,7 @@ enum HotfixDatabaseStatements
name for a suiting suffix.
*/
+ HOTFIX_SEL_BROADCAST_TEXT,
HOTFIX_SEL_TAXI_PATH_NODE,
MAX_HOTFIXDATABASE_STATEMENTS
};