Browse Source

crash fix / error log when collection reward item missing in DB

Image 3 years ago
parent
commit
230e76a915
1 changed files with 14 additions and 0 deletions
  1. 14 0
      EQ2/source/WorldServer/client.cpp

+ 14 - 0
EQ2/source/WorldServer/client.cpp

@@ -8743,6 +8743,13 @@ void Client::DisplayCollectionComplete(Collection* collection) {
 	packet->setArrayLengthByName("num_rewards", reward_items->size());
 	for (i = 0; i < reward_items->size(); i++) {
 		reward_item = reward_items->at(i);
+		if(!reward_item->item)
+		{
+			LogWrite(DATABASE__ERROR, 0, "Database", "DisplayCollectionComplete Collection %s (%u) num_rewards has missing item in slot %u", collection->GetName(), collection->GetID(), i);
+			Message(CHANNEL_COLOR_RED, "DisplayCollectionComplete Collection %s (%u) num_rewards has missing item in slot %u", collection->GetName(), collection->GetID(), i);
+			continue;
+		}
+
 		packet->setArrayDataByName("reward_id", reward_item->item->details.item_id, i);
 		if (version < 860)
 			packet->setItemArrayDataByName("item", reward_item->item, player, i, 0, -1);
@@ -8754,6 +8761,13 @@ void Client::DisplayCollectionComplete(Collection* collection) {
 	packet->setArrayLengthByName("num_select_rewards", selectable_reward_items->size());
 	for (i = 0; i < selectable_reward_items->size(); i++) {
 		reward_item = selectable_reward_items->at(i);
+		if(!reward_item->item)
+		{
+			LogWrite(DATABASE__ERROR, 0, "Database", "DisplayCollectionComplete Collection %s (%u) num_select_rewards has missing item in slot %u", collection->GetName(), collection->GetID(), i);
+			Message(CHANNEL_COLOR_RED, "DisplayCollectionComplete Collection %s (%u) num_select_rewards has missing item in slot %u", collection->GetName(), collection->GetID(), i);
+			continue;
+		}
+
 		packet->setArrayDataByName("select_reward_id", reward_item->item->details.item_id, i);
 		if (version < 860)
 			packet->setItemArrayDataByName("select_item", reward_item->item, player, i, 0, -1);