summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormekolat <mekolat@users.noreply.github.com>2016-05-13 18:47:26 -0400
committermekolat <mekolat@users.noreply.github.com>2016-05-13 18:47:26 -0400
commitceb7acf8291867d56b53c3f696a39e91fd79da59 (patch)
treeaa8435df2ad26674878343b5e6d4531ccd17f329
parentf9df1a84b4486eefc65fb91287c2c399531e5b37 (diff)
parent67fba86142da3c188ccede6c9403afbc2cd72ea1 (diff)
downloadtmwa-ceb7acf8291867d56b53c3f696a39e91fd79da59.tar.gz
tmwa-ceb7acf8291867d56b53c3f696a39e91fd79da59.tar.bz2
tmwa-ceb7acf8291867d56b53c3f696a39e91fd79da59.tar.xz
tmwa-ceb7acf8291867d56b53c3f696a39e91fd79da59.zip
Merge pull request #225 from mekolat/destroy
fix destroynpc crash
-rw-r--r--src/map/clif.cpp17
-rw-r--r--src/map/npc.cpp3
2 files changed, 13 insertions, 7 deletions
diff --git a/src/map/clif.cpp b/src/map/clif.cpp
index bd7f4ef..d4b16a7 100644
--- a/src/map/clif.cpp
+++ b/src/map/clif.cpp
@@ -305,16 +305,19 @@ int clif_send(const Buffer& buf, dumb_ptr<block_list> bl, SendWho type, ClientVe
}
break;
case SendWho::ALL_SAMEMAP: // 同じマップの全クライアントに送信
- for (io::FD i : iter_fds())
+ if (bl->bl_m != borrow(undefined_gat))
{
- Session *s = get_session(i);
- if (!s)
- continue;
- dumb_ptr<map_session_data> sd = dumb_ptr<map_session_data>(static_cast<map_session_data *>(s->session_data.get()));
- if (sd && sd->state.auth && !sd->state.connect_new && sd->bl_m == bl->bl_m)
+ for (io::FD i : iter_fds())
{
+ Session *s = get_session(i);
+ if (!s)
+ continue;
+ dumb_ptr<map_session_data> sd = dumb_ptr<map_session_data>(static_cast<map_session_data *>(s->session_data.get()));
+ if (sd && sd->state.auth && !sd->state.connect_new && sd->bl_m == bl->bl_m)
{
- send_buffer(s, buf);
+ {
+ send_buffer(s, buf);
+ }
}
}
}
diff --git a/src/map/npc.cpp b/src/map/npc.cpp
index 3eb13b3..2600117 100644
--- a/src/map/npc.cpp
+++ b/src/map/npc.cpp
@@ -1052,6 +1052,9 @@ void npc_free_internal(dumb_ptr<npc_data> nd_)
static
void npc_propagate_update(dumb_ptr<npc_data> nd)
{
+ if (nd->bl_m == borrow(undefined_gat))
+ return;
+
int xs = 0, ys = 0;
if (dumb_ptr<npc_data_script> nd_ = nd->is_script())
{