forked from Mirrorlandia_minetest/minetest
Fix get_server_status() segfault due to uninitialized m_env
Fixes #7857
This commit is contained in:
parent
b78698240c
commit
81d55338fa
@ -260,7 +260,7 @@ Server::~Server()
|
|||||||
m_env->kickAllPlayers(SERVER_ACCESSDENIED_SHUTDOWN,
|
m_env->kickAllPlayers(SERVER_ACCESSDENIED_SHUTDOWN,
|
||||||
kick_msg, reconnect);
|
kick_msg, reconnect);
|
||||||
}
|
}
|
||||||
|
|
||||||
actionstream << "Server: Shutting down" << std::endl;
|
actionstream << "Server: Shutting down" << std::endl;
|
||||||
|
|
||||||
// Do this before stopping the server in case mapgen callbacks need to access
|
// Do this before stopping the server in case mapgen callbacks need to access
|
||||||
@ -2897,38 +2897,44 @@ PlayerSAO *Server::getPlayerSAO(session_t peer_id)
|
|||||||
std::wstring Server::getStatusString()
|
std::wstring Server::getStatusString()
|
||||||
{
|
{
|
||||||
std::wostringstream os(std::ios_base::binary);
|
std::wostringstream os(std::ios_base::binary);
|
||||||
os<<L"# Server: ";
|
os << L"# Server: ";
|
||||||
// Version
|
// Version
|
||||||
os<<L"version="<<narrow_to_wide(g_version_string);
|
os << L"version=" << narrow_to_wide(g_version_string);
|
||||||
// Uptime
|
// Uptime
|
||||||
os<<L", uptime="<<m_uptime.get();
|
os << L", uptime=" << m_uptime.get();
|
||||||
// Max lag estimate
|
// Max lag estimate
|
||||||
os<<L", max_lag="<<m_env->getMaxLagEstimate();
|
os << L", max_lag=" << (m_env ? m_env->getMaxLagEstimate() : 0);
|
||||||
|
|
||||||
// Information about clients
|
// Information about clients
|
||||||
bool first = true;
|
bool first = true;
|
||||||
os<<L", clients={";
|
os << L", clients={";
|
||||||
std::vector<session_t> clients = m_clients.getClientIDs();
|
if (m_env) {
|
||||||
for (session_t client_id : clients) {
|
std::vector<session_t> clients = m_clients.getClientIDs();
|
||||||
// Get player
|
for (session_t client_id : clients) {
|
||||||
RemotePlayer *player = m_env->getPlayer(client_id);
|
RemotePlayer *player = m_env->getPlayer(client_id);
|
||||||
// Get name of player
|
|
||||||
std::wstring name = L"unknown";
|
// Get name of player
|
||||||
if (player)
|
std::wstring name = L"unknown";
|
||||||
name = narrow_to_wide(player->getName());
|
if (player)
|
||||||
// Add name to information string
|
name = narrow_to_wide(player->getName());
|
||||||
if(!first)
|
|
||||||
os << L", ";
|
// Add name to information string
|
||||||
else
|
if (!first)
|
||||||
first = false;
|
os << L", ";
|
||||||
os << name;
|
else
|
||||||
|
first = false;
|
||||||
|
|
||||||
|
os << name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
os << L"}";
|
os << L"}";
|
||||||
|
|
||||||
if (!((ServerMap*)(&m_env->getMap()))->isSavingEnabled())
|
if (m_env && !((ServerMap*)(&m_env->getMap()))->isSavingEnabled())
|
||||||
os<<std::endl<<L"# Server: "<<" WARNING: Map saving is disabled.";
|
os << std::endl << L"# Server: " << " WARNING: Map saving is disabled.";
|
||||||
|
|
||||||
if (!g_settings->get("motd").empty())
|
if (!g_settings->get("motd").empty())
|
||||||
os<<std::endl<<L"# Server: "<<narrow_to_wide(g_settings->get("motd"));
|
os << std::endl << L"# Server: " << narrow_to_wide(g_settings->get("motd"));
|
||||||
|
|
||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user