diff options
author | meko <mekolat@users.noreply.github.com> | 2015-09-29 12:23:12 -0400 |
---|---|---|
committer | meko <mekolat@users.noreply.github.com> | 2015-09-29 12:23:12 -0400 |
commit | 029e03e8fb6f66c370bedde08f47d9c5cdb813c9 (patch) | |
tree | 41acaf8df07dbe6727f0be44d14a2481f526e5eb /src/map | |
parent | 25941d0fc34a420726c5bfb88e8f3c02a072369c (diff) | |
parent | 8de5e363fca358fa0e7c91be83766698a3eebbb5 (diff) | |
download | tmwa-029e03e8fb6f66c370bedde08f47d9c5cdb813c9.tar.gz tmwa-029e03e8fb6f66c370bedde08f47d9c5cdb813c9.tar.bz2 tmwa-029e03e8fb6f66c370bedde08f47d9c5cdb813c9.tar.xz tmwa-029e03e8fb6f66c370bedde08f47d9c5cdb813c9.zip |
Merge pull request #160 from wushin/battle-damage-crash
bl could leave and cause clif_send to look for people on undefined.gat
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/clif.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 49089d7..64e9939 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -324,18 +324,28 @@ int clif_send(const Buffer& buf, dumb_ptr<block_list> bl, SendWho type, short mi break; case SendWho::AREA: case SendWho::AREA_WOS: - map_foreachinarea(std::bind(clif_send_sub, ph::_1, buf, bl, type, min_version), - bl->bl_m, - bl->bl_x - AREA_SIZE, bl->bl_y - AREA_SIZE, - bl->bl_x + AREA_SIZE, bl->bl_y + AREA_SIZE, - BL::PC); + { + if (bl->bl_m != borrow(undefined_gat)) + { + map_foreachinarea(std::bind(clif_send_sub, ph::_1, buf, bl, type, min_version), + bl->bl_m, + bl->bl_x - AREA_SIZE, bl->bl_y - AREA_SIZE, + bl->bl_x + AREA_SIZE, bl->bl_y + AREA_SIZE, + BL::PC); + } + } break; case SendWho::AREA_CHAT_WOC: - map_foreachinarea(std::bind(clif_send_sub, ph::_1, buf, bl, SendWho::AREA_CHAT_WOC, min_version), - bl->bl_m, - bl->bl_x - (AREA_SIZE), bl->bl_y - (AREA_SIZE), - bl->bl_x + (AREA_SIZE), bl->bl_y + (AREA_SIZE), - BL::PC); + { + if (bl->bl_m != borrow(undefined_gat)) + { + map_foreachinarea(std::bind(clif_send_sub, ph::_1, buf, bl, SendWho::AREA_CHAT_WOC, min_version), + bl->bl_m, + bl->bl_x - (AREA_SIZE), bl->bl_y - (AREA_SIZE), + bl->bl_x + (AREA_SIZE), bl->bl_y + (AREA_SIZE), + BL::PC); + } + } break; case SendWho::PARTY_AREA: // 同じ画面内の全パーティーメンバに送信 |