Skip to content

Commit

Permalink
remove_detached_inventory: Fix segfault during mod load
Browse files Browse the repository at this point in the history
  • Loading branch information
SmallJoker committed Aug 20, 2019
1 parent fb6f1fd commit b8131c3
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/server.cpp
Expand Up @@ -2571,6 +2571,9 @@ void Server::sendDetachedInventory(const std::string &name, session_t peer_id)
player_it->second.empty()) {
// OK. Send to everyone
} else {
if (!m_env)
return; // Mods are not done loading

RemotePlayer *p = m_env->getPlayer(player_it->second.c_str());
if (!p)
return; // Player is offline
Expand Down Expand Up @@ -3366,7 +3369,9 @@ Inventory* Server::createDetachedInventory(const std::string &name, const std::s
Inventory *inv = new Inventory(m_itemdef);
sanity_check(inv);
m_detached_inventories[name] = inv;
m_detached_inventories_player[name] = player;
if (!player.empty())
m_detached_inventories_player[name] = player;

//TODO find a better way to do this
sendDetachedInventory(name,PEER_ID_INEXISTENT);
return inv;
Expand All @@ -3381,6 +3386,9 @@ bool Server::removeDetachedInventory(const std::string &name)
delete inv_it->second;
m_detached_inventories.erase(inv_it);

if (!m_env) // Mods are not done loading
return true;

const auto &player_it = m_detached_inventories_player.find(name);
if (player_it != m_detached_inventories_player.end()) {
RemotePlayer *player = m_env->getPlayer(player_it->second.c_str());
Expand Down

0 comments on commit b8131c3

Please sign in to comment.