aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsofar <sofar+github@foo-projects.org>2019-03-04 23:11:13 -0800
committerLoïc Blot <nerzhul@users.noreply.github.com>2019-03-05 08:11:13 +0100
commit61e5fbab721898a431b15a5a7e24efb58cd80eb4 (patch)
treec6a8fa1193434c142cd6dd688228a41bcc32a525 /src
parent51662dabb4ba38ea1ec027d907fb2d5f4e0412ad (diff)
downloadminetest-61e5fbab721898a431b15a5a7e24efb58cd80eb4.tar.gz
minetest-61e5fbab721898a431b15a5a7e24efb58cd80eb4.tar.bz2
minetest-61e5fbab721898a431b15a5a7e24efb58cd80eb4.zip
getS16NoEx() returns true unless syntactical error in conf. (#8304)
The getS16NoEx() handler will return true unless there is a `[num_emerge_threads]` line in the `minetest.conf` at which point the excption handler part is reached. Due to the fact that `defaultsettings.cpp` has a default value set for this setting, that never will happen. Because of this, the code will never check the number of threads on the system, and keep `nthreads = 0`. If that happens, the value is changed to `1` and only 1 emerge thread will be used. The default should be set to `1` instead, due to the potential unsafe consequences for the standard sqlite map files, but that should be a separate commit that also adds documentation for that setting. This commit focuses on removing this `hiding` bug instead.
Diffstat (limited to 'src')
-rw-r--r--src/emerge.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/emerge.cpp b/src/emerge.cpp
index 592b1bef7..0ad6ee29b 100644
--- a/src/emerge.cpp
+++ b/src/emerge.cpp
@@ -130,11 +130,13 @@ EmergeManager::EmergeManager(Server *server)
// If unspecified, leave a proc for the main thread and one for
// some other misc thread
- s16 nthreads = 0;
- if (!g_settings->getS16NoEx("num_emerge_threads", nthreads))
+ s16 nthreads;
+ g_settings->getS16NoEx("num_emerge_threads", nthreads);
+ if (nthreads == 0)
nthreads = Thread::getNumberOfProcessors() - 2;
if (nthreads < 1)
nthreads = 1;
+ verbosestream << "Using " << nthreads << " emerge threads." << std::endl;
m_qlimit_total = g_settings->getU16("emergequeue_limit_total");
if (!g_settings->getU16NoEx("emergequeue_limit_diskonly", m_qlimit_diskonly))