Core/DBLayer: Prevent committing transactions started on a different database
This commit is contained in:
1 parent
d003ebd8e4
commit
47acc59f49
75 files changed
+406
-379
No files matched your search
@@ -899,7 +899,7 @@ void GameObject::SaveToDB(uint32 mapid, uint8 spawnMask)
|
||||
data.phaseGroup = GetDBPhase() < 0 ? -GetDBPhase() : data.phaseGroup;
|
||||
|
||||
// Update in DB
|
||||
SQLTransaction trans = WorldDatabase.BeginTransaction();
|
||||
WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction();
|
||||
|
||||
uint8 index = 0;
|
||||
|
||||
@@ -1006,7 +1006,7 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap
|
||||
if (!data)
|
||||
return false;
|
||||
|
||||
SQLTransaction trans = WorldDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
sMapMgr->DoForAllMapsWithMapId(data->spawnPoint.GetMapId(),
|
||||
[spawnId, trans](Map* map) -> void
|
||||
@@ -1021,22 +1021,24 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap
|
||||
}
|
||||
);
|
||||
|
||||
WorldDatabaseTransaction trans2 = WorldDatabase.BeginTransaction();
|
||||
|
||||
// delete data from memory
|
||||
sObjectMgr->DeleteGameObjectData(spawnId);
|
||||
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAMEOBJECT);
|
||||
stmt->setUInt32(0, spawnId);
|
||||
trans->Append(stmt);
|
||||
trans2->Append(stmt);
|
||||
|
||||
stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_SPAWNGROUP_MEMBER);
|
||||
stmt->setUInt8(0, uint8(SPAWN_TYPE_GAMEOBJECT));
|
||||
stmt->setUInt32(1, spawnId);
|
||||
trans->Append(stmt);
|
||||
trans2->Append(stmt);
|
||||
|
||||
stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_EVENT_GAMEOBJECT);
|
||||
stmt->setUInt32(0, spawnId);
|
||||
trans->Append(stmt);
|
||||
trans2->Append(stmt);
|
||||
|
||||
WorldDatabase.CommitTransaction(trans);
|
||||
WorldDatabase.CommitTransaction(trans2);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user