diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2015-01-03 21:07:56 -0800 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2015-01-03 21:58:26 -0800 |
commit | 00da6b5977574a0564169172227d8aab45be188f (patch) | |
tree | dd52eee506a98e1eb9fcdea52e7db25079a7ad28 /src/map/party.cpp | |
parent | 4c91abd6a020ee030114ae3f22d8f6066e7528be (diff) | |
download | tmwa-00da6b5977574a0564169172227d8aab45be188f.tar.gz tmwa-00da6b5977574a0564169172227d8aab45be188f.tar.bz2 tmwa-00da6b5977574a0564169172227d8aab45be188f.tar.xz tmwa-00da6b5977574a0564169172227d8aab45be188f.zip |
Switch MATCH to separate begin/end macros
The for loop trick turned out to be very prone to infinite loops
at runtime. It's better to force compiler errors even if it's ugly.
Diffstat (limited to 'src/map/party.cpp')
-rw-r--r-- | src/map/party.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/map/party.cpp b/src/map/party.cpp index 0a9d2c5..b05f4f1 100644 --- a/src/map/party.cpp +++ b/src/map/party.cpp @@ -213,11 +213,12 @@ static PartyPair handle_info(const PartyPair sp) { Option<PartyPair> p_ = party_search(sp.party_id); - if OPTION_IS_SOME_NOLOOP(p, p_) + OMATCH_BEGIN_SOME (p, p_) { *p.party_most = *sp.party_most; return p; } + OMATCH_END (); { PartyPair p{sp.party_id, party_db.init(sp.party_id)}; @@ -459,7 +460,7 @@ int party_member_leaved(PartyId party_id, AccountId account_id, CharName name) { dumb_ptr<map_session_data> sd = map_id2sd(account_to_block(account_id)); Option<PartyPair> p_ = party_search(party_id); - if OPTION_IS_SOME_NOLOOP(p, p_) + OMATCH_BEGIN_SOME (p, p_) { int i; for (i = 0; i < MAX_PARTY; i++) @@ -470,6 +471,7 @@ int party_member_leaved(PartyId party_id, AccountId account_id, CharName name) p->member[i].sd = nullptr; } } + OMATCH_END (); if (sd != nullptr && sd->status.party_id == party_id) { sd->status.party_id = PartyId(); |