From 650168cadac2a45277a9527ae79efb288ba7a4a4 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 7 May 2020 21:39:04 +0200 Subject: [PATCH] Fix Server triggering wrong errors if environment init fails --- src/serverenvironment.cpp | 6 ++++++ src/serverenvironment.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 27432e973..6bf7399cf 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -624,6 +624,9 @@ PlayerSAO *ServerEnvironment::loadPlayer(RemotePlayer *player, bool *new_player, void ServerEnvironment::saveMeta() { + if (!m_meta_loaded) + return; + std::string path = m_path_world + DIR_DELIM "env_meta.txt"; // Open file and serialize @@ -650,6 +653,9 @@ void ServerEnvironment::saveMeta() void ServerEnvironment::loadMeta() { + SANITY_CHECK(!m_meta_loaded); + m_meta_loaded = true; + // If file doesn't exist, load default environment metadata if (!fs::PathExists(m_path_world + DIR_DELIM "env_meta.txt")) { infostream << "ServerEnvironment: Loading default environment metadata" diff --git a/src/serverenvironment.h b/src/serverenvironment.h index f814b95c0..e2f1a3784 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -440,6 +440,8 @@ private: IntervalLimiter m_active_blocks_management_interval; IntervalLimiter m_active_block_modifier_interval; IntervalLimiter m_active_blocks_nodemetadata_interval; + // Whether the variables below have been read from file yet + bool m_meta_loaded = false; // Time from the beginning of the game in seconds. // Incremented in step(). u32 m_game_time = 0;