diff --git a/source/WorldServer/Spawn.cpp b/source/WorldServer/Spawn.cpp index 3541663..4d9027e 100644 --- a/source/WorldServer/Spawn.cpp +++ b/source/WorldServer/Spawn.cpp @@ -512,6 +512,15 @@ EQ2Packet* Spawn::spawn_serialize(Player* player, int16 version, int16 offset, i } PacketStruct* header = player->GetSpawnHeaderStruct(); + if (!header) { + LogWrite(SPAWN__ERROR, 0, "Spawn", "Spawn::spawn_serialize: GetSpawnHeaderStruct returned null!"); + player->GetZone()->SetSpawnStructs(player->GetClient()); + header = player->GetSpawnHeaderStruct(); + if(!header) { + LogWrite(SPAWN__ERROR, 0, "Spawn", "Spawn::spawn_serialize: GetSpawnHeaderStruct still null likely to crash!"); + return nullptr; + } + } header->ResetData(); InitializeHeaderPacketData(player, header, index); diff --git a/source/common/PacketStruct.cpp b/source/common/PacketStruct.cpp index 4de8120..6dcdff2 100644 --- a/source/common/PacketStruct.cpp +++ b/source/common/PacketStruct.cpp @@ -2647,6 +2647,10 @@ void PacketStruct::setItemArrayDataByName(const char* name, Item* item, Player* } void PacketStruct::ResetData() { + if (this == nullptr) { + LogWrite(PACKET__ERROR, 0, "PacketStruct", "ResetData called on a null PacketStruct pointer"); + return; + } vector::iterator itr; for (itr = structs.begin(); itr != structs.end(); itr++) { DataStruct* ds = *itr;