- Fixing issue 234 (segfault risk with "becomes")
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-12-18 14:47:07 +00:00
parent c78eef002a
commit b892bce44c
4 changed files with 13 additions and 4 deletions

View File

@@ -759,7 +759,7 @@ text=Target noncreature artifact becomes an artifact creature with power and tou
id=19573
name=Karn's Touch
target=artifact[-creature]
auto=becomes(Creature,manacost/manacost)
auto=becomes(Creature,manacost/manacost) ueot
rarity=R
mana={U}{U}
type=Instant

View File

@@ -238,6 +238,7 @@ immaculate_magistrate.txt
instill_energy_i166.txt
jodahs_avenger.txt
jump.txt
karns_touch_i233.txt
keldon_warlord.txt
keldon_warlord2.txt
kird_ape.txt

View File

@@ -18,7 +18,7 @@ Jayemdae Tome
[ASSERT]
firstmain
[PLAYER1]
graveyard:Karn's Touch,Swords to Plowshares,Jayemdae Tome
graveyard:Karn's Touch,Swords to Plowshares
life:24
[PLAYER2]
[END]

View File

@@ -2292,17 +2292,25 @@ public:
class ABecomesUEOT: public InstantAbility{
public:
ABecomes * ability;
vector<ABecomes *> clones;
ABecomesUEOT(int id, MTGCardInstance * source, MTGCardInstance * target, string types, WParsedPT * wpt, string abilities):InstantAbility(id,source,target){
ability = NEW ABecomes(id,source,target,types,wpt,abilities);
}
int resolve(){
ability->addToGame();
ABecomes * a = ability->clone();
a->target = this->target;
a->forceDestroy = -1; //Prevent the effect from getting destroyed because its source is not inplay
a->addToGame();
clones.push_back(a);
return 1;
}
int destroy(){
ability->destroy();
for (size_t i = 0; i < clones.size(); ++i){
clones[i]->forceDestroy = 0;
}
clones.clear();
return 1;
}