Skip to content

Commit

Permalink
Fixes crash on dropping an artifact on an empty garrison slot;
Browse files Browse the repository at this point in the history
  • Loading branch information
Fayth committed Jan 23, 2015
1 parent a90d603 commit 72f34a7
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions client/widgets/CGarrisonInt.cpp
Expand Up @@ -239,17 +239,20 @@ void CGarrisonSlot::clickLeft(tribool down, bool previousState)
{
const CGHeroInstance *srcHero = commonInfo->src.AOH->getHero();
artSelected = true;
ArtifactLocation src(srcHero, commonInfo->src.slotID);
ArtifactLocation dst(myStack, ArtifactPosition::CREATURE_SLOT);
if (art->canBePutAt(dst, true))
{ //equip clicked stack
if(dst.getArt())
{
//creature can wear only one active artifact
//if we are placing a new one, the old one will be returned to the hero's backpack
LOCPLINT->cb->swapArtifacts(dst, ArtifactLocation(srcHero, dst.getArt()->firstBackpackSlot(srcHero)));
if (myStack) // try dropping the artifact only if the slot isn't empty
{
ArtifactLocation src(srcHero, commonInfo->src.slotID);
ArtifactLocation dst(myStack, ArtifactPosition::CREATURE_SLOT);
if (art->canBePutAt(dst, true))
{ //equip clicked stack
if(dst.getArt())
{
//creature can wear only one active artifact
//if we are placing a new one, the old one will be returned to the hero's backpack
LOCPLINT->cb->swapArtifacts(dst, ArtifactLocation(srcHero, dst.getArt()->firstBackpackSlot(srcHero)));
}
LOCPLINT->cb->swapArtifacts(src, dst);
}
LOCPLINT->cb->swapArtifacts(src, dst);
}
}
}
Expand Down

0 comments on commit 72f34a7

Please sign in to comment.