mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-21 00:19:29 +02:00
Use bonus only as shared_ptr to avoid memory corruption
This commit is contained in:
@ -46,12 +46,12 @@ std::shared_ptr<CGObjectInstance> CRewardableConstructor::create(IGameInfoCallba
|
||||
return ret;
|
||||
}
|
||||
|
||||
void CRewardableConstructor::assignBonuses(std::vector<Bonus> & bonuses, MapObjectID objectID) const
|
||||
void CRewardableConstructor::assignBonuses(std::vector<std::shared_ptr<Bonus>> & bonuses, MapObjectID objectID) const
|
||||
{
|
||||
for (auto & bonus : bonuses)
|
||||
{
|
||||
bonus.source = BonusSource::OBJECT_TYPE;
|
||||
bonus.sid = BonusSourceID(objectID);
|
||||
bonus->source = BonusSource::OBJECT_TYPE;
|
||||
bonus->sid = BonusSourceID(objectID);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ class DLL_LINKAGE CRewardableConstructor : public AObjectTypeHandler
|
||||
{
|
||||
Rewardable::Info objectInfo;
|
||||
|
||||
void assignBonuses(std::vector<Bonus> & bonuses, MapObjectID objectID) const;
|
||||
void assignBonuses(std::vector<std::shared_ptr<Bonus>> & bonuses, MapObjectID objectID) const;
|
||||
void initTypeData(const JsonNode & config) override;
|
||||
|
||||
bool blockVisit = false;
|
||||
|
@ -269,7 +269,7 @@ void BoatInstanceConstructor::initializeObject(CGBoat * boat) const
|
||||
boat->onboardAssaultAllowed = onboardAssaultAllowed;
|
||||
boat->onboardVisitAllowed = onboardVisitAllowed;
|
||||
for(auto & b : bonuses)
|
||||
boat->addNewBonus(std::make_shared<Bonus>(b));
|
||||
boat->addNewBonus(b);
|
||||
}
|
||||
|
||||
AnimationPath BoatInstanceConstructor::getBoatAnimationName() const
|
||||
|
@ -110,7 +110,7 @@ class DLL_LINKAGE BoatInstanceConstructor : public CDefaultObjectTypeHandler<CGB
|
||||
protected:
|
||||
void initTypeData(const JsonNode & config) override;
|
||||
|
||||
std::vector<Bonus> bonuses;
|
||||
std::vector<std::shared_ptr<Bonus>> bonuses;
|
||||
EPathfindingLayer layer;
|
||||
bool onboardAssaultAllowed; //if true, hero can attack units from transport
|
||||
bool onboardVisitAllowed; //if true, hero can visit objects from transport
|
||||
|
Reference in New Issue
Block a user