diff --git a/zone/task_client_state.cpp b/zone/task_client_state.cpp index 49c906183..a79f52089 100644 --- a/zone/task_client_state.cpp +++ b/zone/task_client_state.cpp @@ -991,12 +991,14 @@ void ClientTaskState::RewardTask(Client *c, const TaskInformation *ti, ClientTas if (item_id > 0) { std::unique_ptr inst(database.CreateItem(item_id, charges)); - bool stacked = c->TryStacking(inst.get()); - if (!stacked) { - int16_t slot = c->GetInv().FindFreeSlot(inst->IsClassBag(), true, inst->GetItem()->Size); - c->SummonItem(item_id, charges, 0, 0, 0, 0, 0, 0, false, slot); - if (item_data) { - c->MessageString(Chat::Yellow, YOU_HAVE_BEEN_GIVEN, inst->GetItem()->Name); + if (inst && inst->GetItem()) { + bool stacked = c->TryStacking(inst.get()); + if (!stacked) { + int16_t slot = c->GetInv().FindFreeSlot(inst->IsClassBag(), true, inst->GetItem()->Size); + c->SummonItem(item_id, charges, 0, 0, 0, 0, 0, 0, false, slot); + if (item_data) { + c->MessageString(Chat::Yellow, YOU_HAVE_BEEN_GIVEN, inst->GetItem()->Name); + } } } }