Commit 370bf78f authored by nanahira's avatar nanahira

fix

parent ab84cd93
...@@ -1391,22 +1391,24 @@ int32 card::is_extra_link_state() { ...@@ -1391,22 +1391,24 @@ int32 card::is_extra_link_state() {
if(!linked_group1.size()) if(!linked_group1.size())
return FALSE; return FALSE;
cset.insert(pcard); cset.insert(pcard);
return check_extra_link(this, &cset, &excset, &linked_group1); return check_extra_link(&cset, &excset, &linked_group1);
} }
int32 card::check_extra_link(card* scard, card_set* cset, card_set* excset, card_set* linked_group1) { int32 card::check_extra_link(card_set* cset, card_set* excset, card_set* linked_group1) {
for(auto cit = linked_group1->begin(); cit != linked_group1->end(); ++cit) { for(auto cit = linked_group1->begin(); cit != linked_group1->end(); ++cit) {
card* pcard = *cit; card* pcard = *cit;
if(excset->find(pcard) != cset->end())
if(cset->find(scard) != cset->end())
return TRUE;
if(cset->find(pcard) != cset->end()) if(cset->find(pcard) != cset->end())
continue; continue;
if(excset->find(pcard) != cset->end())
if(cset->find(this) != cset->end())
return TRUE;
card_set linked_group2; card_set linked_group2;
pcard->get_mutual_linked_cards(&linked_group2); pcard->get_mutual_linked_cards(&linked_group2);
if(!linked_group2.size()) if(!linked_group2.size())
continue; continue;
cset->insert(pcard); cset->insert(pcard);
if(check_extra_link(scard, cset, excset, &linked_group2)) int32 result = check_extra_link(cset, excset, &linked_group2);
cset->erase(pcard);
if(result)
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
......
...@@ -228,7 +228,7 @@ public: ...@@ -228,7 +228,7 @@ public:
void get_mutual_linked_cards(card_set * cset); void get_mutual_linked_cards(card_set * cset);
int32 is_link_state(); int32 is_link_state();
int32 is_extra_link_state(); int32 is_extra_link_state();
int32 check_extra_link(card* scard, card_set* cset, card_set* excset, card_set* linked_group1); int32 check_extra_link(card_set* cset, card_set* excset, card_set* linked_group1);
int32 is_position(int32 pos); int32 is_position(int32 pos);
void set_status(uint32 status, int32 enabled); void set_status(uint32 status, int32 enabled);
int32 get_status(uint32 status); int32 get_status(uint32 status);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment