Fix configuration caching in log_deprecated (#9697)
authorHybridDog <3192173+HybridDog@users.noreply.github.com>
Tue, 21 Apr 2020 22:07:12 +0000 (00:07 +0200)
committerGitHub <noreply@github.com>
Tue, 21 Apr 2020 22:07:12 +0000 (00:07 +0200)
* Fix configuration caching in log_deprecated

The configured variable was never set to true.
I've set the variables to thread_local because the configuration should be reloaded after reentering the world from mainmenu.

src/script/common/c_internal.cpp
src/script/lua_api/l_util.cpp
src/script/lua_api/l_util.h

index b19af9f82145bf7f5287705250f1382c7c39bf3e..6df1f8b7b39f44b51cc014c893c7b18ad8f4f118 100644 (file)
@@ -157,9 +157,9 @@ static void script_log(lua_State *L, const std::string &message,
 
 void log_deprecated(lua_State *L, const std::string &message, int stack_depth)
 {
-       static bool configured = false;
-       static bool do_log     = false;
-       static bool do_error   = false;
+       static thread_local bool configured = false;
+       static thread_local bool do_log = false;
+       static thread_local bool do_error = false;
 
        // Only read settings on first call
        if (!configured) {
@@ -167,9 +167,10 @@ void log_deprecated(lua_State *L, const std::string &message, int stack_depth)
                if (value == "log") {
                        do_log = true;
                } else if (value == "error") {
-                       do_log   = true;
+                       do_log = true;
                        do_error = true;
                }
+               configured = true;
        }
 
        if (do_log)
index ae3e5df3d2ae70d64b447f0f9c474bf5211c4fdb..28ee39fc8c6c7a4f868efed2f9614eb068e7e36a 100644 (file)
@@ -44,7 +44,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 // log([level,] text)
 // Writes a line to the logger.
-// The one-argument version logs to infostream.
+// The one-argument version logs to LL_NONE.
 // The two-argument version accepts a log level.
 // Either the special case "deprecated" for deprecation notices, or any specified in
 // Logger::stringToLevel(name).
index 5697aab1500e7509c9b4cd8a7ec7e684116b3701..9ff91bb538723a42ae4b9eee9423b42fe90c3097 100644 (file)
@@ -37,7 +37,7 @@ private:
 
        // log([level,] text)
        // Writes a line to the logger.
-       // The one-argument version logs to infostream.
+       // The one-argument version logs to LL_NONE.
        // The two-argument version accepts a log level.
        static int l_log(lua_State *L);