From 7f743178db2a45bd3f68ef2c9c7df6deca1f3ab6 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Wed, 5 Feb 2014 00:17:53 -0500 Subject: [PATCH] Remove blank default values for emergequeue_limit_* settings Add checks for invalid user input for important settings Rename Settings::tryGet* to Settings::get*NoEx for consistency --- src/defaultsettings.cpp | 2 -- src/emerge.cpp | 24 ++++++++++++++++-------- src/mapgen_indev.cpp | 2 +- src/mapgen_v6.cpp | 6 +++--- src/mapgen_v7.cpp | 2 +- src/settings.h | 22 +++++++++++----------- 6 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index cb7b0ef7a..bac5e0e2d 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -219,8 +219,6 @@ void set_default_settings(Settings *settings) settings->setDefault("remote_media", ""); settings->setDefault("debug_log_level", "2"); settings->setDefault("emergequeue_limit_total", "256"); - settings->setDefault("emergequeue_limit_diskonly", ""); - settings->setDefault("emergequeue_limit_generate", ""); settings->setDefault("num_emerge_threads", "1"); // physics stuff diff --git a/src/emerge.cpp b/src/emerge.cpp index 42e533759..88bb3a1e6 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -102,17 +102,25 @@ EmergeManager::EmergeManager(IGameDef *gamedef) { // if unspecified, leave a proc for the main thread and one for // some other misc thread int nthreads = 0; - if (!g_settings->tryGetS16("num_emerge_threads", nthreads)) + if (!g_settings->getS16NoEx("num_emerge_threads", nthreads)) nthreads = porting::getNumberOfProcessors() - 2; if (nthreads < 1) nthreads = 1; qlimit_total = g_settings->getU16("emergequeue_limit_total"); - if (!g_settings->tryGetU16("emergequeue_limit_diskonly", qlimit_diskonly)) + if (!g_settings->getU16NoEx("emergequeue_limit_diskonly", qlimit_diskonly)) qlimit_diskonly = nthreads * 5 + 1; - if (!g_settings->tryGetU16("emergequeue_limit_generate", qlimit_generate)) + if (!g_settings->getU16NoEx("emergequeue_limit_generate", qlimit_generate)) qlimit_generate = nthreads + 1; + // don't trust user input for something very important like this + if (qlimit_total < 1) + qlimit_total = 1; + if (qlimit_diskonly < 1) + qlimit_diskonly = 1; + if (qlimit_generate < 1) + qlimit_generate = 1; + for (int i = 0; i != nthreads; i++) emergethread.push_back(new EmergeThread((Server *)gamedef, i)); @@ -352,13 +360,13 @@ void EmergeManager::loadParamsFromSettings(Settings *settings) { std::string seed_str; const char *setname = (settings == g_settings) ? "fixed_map_seed" : "seed"; - if (settings->tryGet(setname, seed_str)) + if (settings->getNoEx(setname, seed_str)) params.seed = read_seed(seed_str.c_str()); - settings->tryGet("mg_name", params.mg_name); - settings->tryGetS16("water_level", params.water_level); - settings->tryGetS16("chunksize", params.chunksize); - settings->tryGetFlagStr("mg_flags", params.flags, flagdesc_mapgen); + settings->getNoEx("mg_name", params.mg_name); + settings->getS16NoEx("water_level", params.water_level); + settings->getS16NoEx("chunksize", params.chunksize); + settings->getFlagStrNoEx("mg_flags", params.flags, flagdesc_mapgen); delete params.sparams; params.sparams = createMapgenParams(params.mg_name); diff --git a/src/mapgen_indev.cpp b/src/mapgen_indev.cpp index 67535b0b4..ac5b4e811 100644 --- a/src/mapgen_indev.cpp +++ b/src/mapgen_indev.cpp @@ -164,7 +164,7 @@ MapgenIndevParams::MapgenIndevParams() { void MapgenIndevParams::readParams(Settings *settings) { MapgenV6Params::readParams(settings); - settings->tryGetS16("mgindev_float_islands", float_islands); + settings->getS16NoEx("mgindev_float_islands", float_islands); settings->getNoiseIndevParams("mgindev_np_terrain_base", npindev_terrain_base); settings->getNoiseIndevParams("mgindev_np_terrain_higher", npindev_terrain_higher); diff --git a/src/mapgen_v6.cpp b/src/mapgen_v6.cpp index 526d4af2e..92ae7dff0 100644 --- a/src/mapgen_v6.cpp +++ b/src/mapgen_v6.cpp @@ -112,9 +112,9 @@ MapgenV6Params::MapgenV6Params() { void MapgenV6Params::readParams(Settings *settings) { - settings->tryGetFlagStr("mgv6_spflags", spflags, flagdesc_mapgen_v6); - settings->tryGetFloat("mgv6_freq_desert", freq_desert); - settings->tryGetFloat("mgv6_freq_beach", freq_beach); + settings->getFlagStrNoEx("mgv6_spflags", spflags, flagdesc_mapgen_v6); + settings->getFloatNoEx("mgv6_freq_desert", freq_desert); + settings->getFloatNoEx("mgv6_freq_beach", freq_beach); settings->getNoiseParams("mgv6_np_terrain_base", np_terrain_base); settings->getNoiseParams("mgv6_np_terrain_higher", np_terrain_higher); diff --git a/src/mapgen_v7.cpp b/src/mapgen_v7.cpp index 77e25a672..835915164 100644 --- a/src/mapgen_v7.cpp +++ b/src/mapgen_v7.cpp @@ -126,7 +126,7 @@ MapgenV7Params::MapgenV7Params() { void MapgenV7Params::readParams(Settings *settings) { - settings->tryGetFlagStr("mgv7_spflags", spflags, flagdesc_mapgen_v7); + settings->getFlagStrNoEx("mgv7_spflags", spflags, flagdesc_mapgen_v7); settings->getNoiseParams("mgv7_np_terrain_base", np_terrain_base); settings->getNoiseParams("mgv7_np_terrain_alt", np_terrain_alt); diff --git a/src/settings.h b/src/settings.h index f019ce50c..cf698b0eb 100644 --- a/src/settings.h +++ b/src/settings.h @@ -745,7 +745,7 @@ fail: } //////////// Try to get value, no exception thrown - bool tryGet(std::string name, std::string &val) + bool getNoEx(std::string name, std::string &val) { try { val = get(name); @@ -755,7 +755,7 @@ fail: } } - bool tryGetFlagStr(std::string name, u32 &val, FlagDesc *flagdesc) + bool getFlagStrNoEx(std::string name, u32 &val, FlagDesc *flagdesc) { try { val = getFlagStr(name, flagdesc); @@ -765,7 +765,7 @@ fail: } } - bool tryGetFloat(std::string name, float &val) + bool getFloatNoEx(std::string name, float &val) { try { val = getFloat(name); @@ -775,7 +775,7 @@ fail: } } - bool tryGetU16(std::string name, int &val) + bool getU16NoEx(std::string name, int &val) { try { val = getU16(name); @@ -785,7 +785,7 @@ fail: } } - bool tryGetU16(std::string name, u16 &val) + bool getU16NoEx(std::string name, u16 &val) { try { val = getU16(name); @@ -795,7 +795,7 @@ fail: } } - bool tryGetS16(std::string name, int &val) + bool getS16NoEx(std::string name, int &val) { try { val = getU16(name); @@ -805,7 +805,7 @@ fail: } } - bool tryGetS16(std::string name, s16 &val) + bool getS16NoEx(std::string name, s16 &val) { try { val = getS16(name); @@ -815,7 +815,7 @@ fail: } } - bool tryGetS32(std::string name, s32 &val) + bool getS32NoEx(std::string name, s32 &val) { try { val = getS32(name); @@ -825,7 +825,7 @@ fail: } } - bool tryGetV3F(std::string name, v3f &val) + bool getV3FNoEx(std::string name, v3f &val) { try { val = getV3F(name); @@ -835,7 +835,7 @@ fail: } } - bool tryGetV2F(std::string name, v2f &val) + bool getV2FNoEx(std::string name, v2f &val) { try { val = getV2F(name); @@ -845,7 +845,7 @@ fail: } } - bool tryGetU64(std::string name, u64 &val) + bool getU64NoEx(std::string name, u64 &val) { try { val = getU64(name);