summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeko <mekolat@users.noreply.github.com>2015-09-29 12:23:12 -0400
committermeko <mekolat@users.noreply.github.com>2015-09-29 12:23:12 -0400
commit029e03e8fb6f66c370bedde08f47d9c5cdb813c9 (patch)
tree41acaf8df07dbe6727f0be44d14a2481f526e5eb
parent25941d0fc34a420726c5bfb88e8f3c02a072369c (diff)
parent8de5e363fca358fa0e7c91be83766698a3eebbb5 (diff)
downloadtmwa-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
-rw-r--r--src/map/clif.cpp30
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: // 同じ画面内の全パーティーメンバに送信