diff options
| author | Spp <spp@jorge.gr> | 2013-05-30 13:14:06 +0200 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2013-05-30 13:18:29 +0200 |
| commit | 9664c0ab5cc7449f2e839fb60b6b87c9d56dfb92 (patch) | |
| tree | 092af4d16233823423cc552c567acb3307380951 /src/server/game/Entities | |
| parent | 782ea4309a4d392ba9933caace067d567703c84b (diff) | |
Core/Misc: Another batch of fixes for issues found by static analysis
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 38 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 44 | ||||
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 5 |
3 files changed, 47 insertions, 40 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 50f745669a7..f274f201e04 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2456,19 +2456,18 @@ uint32 Creature::GetVendorItemCurrentCount(VendorItem const* vItem) time_t ptime = time(NULL); if (time_t(vCount->lastIncrementTime + vItem->incrtime) <= ptime) - { - ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(vItem->item); - - uint32 diff = uint32((ptime - vCount->lastIncrementTime)/vItem->incrtime); - if ((vCount->count + diff * pProto->BuyCount) >= vItem->maxcount) + if (ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(vItem->item)) { - m_vendorItemCounts.erase(itr); - return vItem->maxcount; - } + uint32 diff = uint32((ptime - vCount->lastIncrementTime)/vItem->incrtime); + if ((vCount->count + diff * pProto->BuyCount) >= vItem->maxcount) + { + m_vendorItemCounts.erase(itr); + return vItem->maxcount; + } - vCount->count += diff * pProto->BuyCount; - vCount->lastIncrementTime = ptime; - } + vCount->count += diff * pProto->BuyCount; + vCount->lastIncrementTime = ptime; + } return vCount->count; } @@ -2495,15 +2494,14 @@ uint32 Creature::UpdateVendorItemCurrentCount(VendorItem const* vItem, uint32 us time_t ptime = time(NULL); if (time_t(vCount->lastIncrementTime + vItem->incrtime) <= ptime) - { - ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(vItem->item); - - uint32 diff = uint32((ptime - vCount->lastIncrementTime)/vItem->incrtime); - if ((vCount->count + diff * pProto->BuyCount) < vItem->maxcount) - vCount->count += diff * pProto->BuyCount; - else - vCount->count = vItem->maxcount; - } + if (ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(vItem->item)) + { + uint32 diff = uint32((ptime - vCount->lastIncrementTime)/vItem->incrtime); + if ((vCount->count + diff * pProto->BuyCount) < vItem->maxcount) + vCount->count += diff * pProto->BuyCount; + else + vCount->count = vItem->maxcount; + } vCount->count = vCount->count > used_count ? vCount->count-used_count : 0; vCount->lastIncrementTime = ptime; diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 8a8c9ad895f..d59015fd359 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -184,7 +184,9 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, uint64 objectGUID) const data << item.BoxMessage; // accept text (related to money) pop up box, 2.0.3 } - data << uint32(_questMenu.GetMenuItemCount()); // max count 0x20 + size_t count_pos = data.wpos(); + data << uint32(0); // max count 0x20 + uint32 count = 0; // Store this instead of checking the Singleton every loop iteration bool questLevelInTitle = sWorld->getBoolConfig(CONFIG_UI_QUESTLEVELS_IN_DIALOGS); @@ -193,26 +195,29 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, uint64 objectGUID) const { QuestMenuItem const& item = _questMenu.GetItem(i); uint32 questID = item.QuestId; - Quest const* quest = sObjectMgr->GetQuestTemplate(questID); - - data << uint32(questID); - data << uint32(item.QuestIcon); - data << int32(quest->GetQuestLevel()); - data << uint32(quest->GetFlags()); // 3.3.3 quest flags - data << uint8(0); // 3.3.3 changes icon: blue question or yellow exclamation - std::string title = quest->GetTitle(); + if (Quest const* quest = sObjectMgr->GetQuestTemplate(questID)) + { + ++count; + data << uint32(questID); + data << uint32(item.QuestIcon); + data << int32(quest->GetQuestLevel()); + data << uint32(quest->GetFlags()); // 3.3.3 quest flags + data << uint8(0); // 3.3.3 changes icon: blue question or yellow exclamation + std::string title = quest->GetTitle(); - int32 locale = _session->GetSessionDbLocaleIndex(); - if (locale >= 0) - if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(questID)) - ObjectMgr::GetLocaleString(localeData->Title, locale, title); + int32 locale = _session->GetSessionDbLocaleIndex(); + if (locale >= 0) + if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(questID)) + ObjectMgr::GetLocaleString(localeData->Title, locale, title); - if (questLevelInTitle) - AddQuestLevelToTitle(title, quest->GetQuestLevel()); + if (questLevelInTitle) + AddQuestLevelToTitle(title, quest->GetQuestLevel()); - data << title; // max 0x200 + data << title; // max 0x200 + } } + data.put<uint8>(count_pos, count); _session->SendPacket(&data); } @@ -300,20 +305,21 @@ void PlayerMenu::SendQuestGiverQuestList(QEmote eEmote, const std::string& Title data << uint32(eEmote._Emote); // NPC emote size_t count_pos = data.wpos(); - data << uint8 (_questMenu.GetMenuItemCount()); + data << uint8 (0); uint32 count = 0; // Store this instead of checking the Singleton every loop iteration bool questLevelInTitle = sWorld->getBoolConfig(CONFIG_UI_QUESTLEVELS_IN_DIALOGS); - for (; count < _questMenu.GetMenuItemCount(); ++count) + for (uint32 i = 0; i < _questMenu.GetMenuItemCount(); ++i) { - QuestMenuItem const& qmi = _questMenu.GetItem(count); + QuestMenuItem const& qmi = _questMenu.GetItem(i); uint32 questID = qmi.QuestId; if (Quest const* quest = sObjectMgr->GetQuestTemplate(questID)) { + ++count; std::string title = quest->GetTitle(); int32 locale = _session->GetSessionDbLocaleIndex(); diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index cc9e87052f7..1556703e45b 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -87,7 +87,10 @@ bool GameObject::AIM_Initialize() std::string GameObject::GetAIName() const { - return sObjectMgr->GetGameObjectTemplate(GetEntry())->AIName; + if (GameObjectTemplate const* got = sObjectMgr->GetGameObjectTemplate(GetEntry())) + return got->AIName; + + return ""; } void GameObject::CleanupsBeforeDelete(bool /*finalCleanup*/) |
