Skip to content

Commit 1217da3

Browse files
committed
config: Remove asserts and redundancies and switch to heap for Config::Save
1 parent 30f438a commit 1217da3

1 file changed

Lines changed: 15 additions & 25 deletions

File tree

app/source/config.cpp

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,59 +12,49 @@ config_t cfg;
1212
namespace Config {
1313
int Save(config_t config) {
1414
int ret = 0;
15-
char *buf = new char[128];
15+
char buf[128];
1616
int len = std::snprintf(buf, 128, config_file, config_version, cfg.sort, cfg.dark_theme, cfg.dev_options);
1717

1818
if (R_FAILED(ret = FS::WriteFile("config.json", buf, len))) {
19-
Log::Error("Read config failed in Config_Save 0x%08x\n", ret);
20-
delete[] buf;
19+
Log::Error("%s failed: 0x%08x\n", __func__, ret);
2120
return ret;
2221
}
2322

24-
delete[] buf;
2523
return 0;
2624
}
2725

28-
static void SetDefault(config_t &config) {
29-
config.sort = 0;
30-
config.dark_theme = false;
31-
config.dev_options = false;
32-
}
33-
3426
int Load(void) {
3527
int ret = 0;
3628

3729
// Set root path and current working directory based on model.
3830
cfg.cwd = is_psp_go? "ef0:" : "ms0:";
39-
40-
if (is_psp_go)
41-
device = BROWSE_STATE_INTERNAL;
42-
else
43-
device = BROWSE_STATE_EXTERNAL;
31+
device = is_psp_go ? BROWSE_STATE_INTERNAL : BROWSE_STATE_EXTERNAL;
4432

4533
if (!FS::FileExists("config.json")) {
46-
Config::SetDefault(cfg);
47-
return Save(cfg);
34+
cfg = config_t();
35+
cfg.cwd = is_psp_go? "ef0:" : "ms0:";
36+
return Config::Save(cfg);
4837
}
4938

5039
u64 size = FS::GetFileSize("config.json");
5140
char *buf = new char[size];
5241

5342
if (R_FAILED(ret = FS::ReadFile("config.json", buf, size))) {
54-
Log::Error("Read config failed in Config_Load 0x%08x\n", ret);
43+
Log::Error("%s(FS::ReadFile) failed: 0x%08x\n", __func__, ret);
5544
delete[] buf;
5645
return ret;
5746
}
5847

5948
buf[size] = '\0';
60-
6149
rapidjson::Document document;
6250
document.Parse(buf);
63-
assert(document.IsObject());
64-
assert(document.HasMember("config_ver"));
65-
assert(document.HasMember("sort"));
66-
assert(document.HasMember("dark_theme"));
67-
assert(document.HasMember("dev_options"));
51+
52+
if ((!document.IsObject()) || (!document.HasMember("config_ver")) || (!document.HasMember("sort")) ||
53+
(!document.HasMember("dark_theme")) || (!document.HasMember("dev_options"))) {
54+
Log::Error("%s failed: Malformed config file, resetting\n", __func__);
55+
cfg = config_t();
56+
return Config::Save(cfg);
57+
}
6858

6959
config_version_holder = document["config_ver"].GetInt();
7060
cfg.sort = document["sort"].GetInt();
@@ -76,7 +66,7 @@ namespace Config {
7666
// delete[] config file if config file is updated. This will rarely happen.
7767
if (config_version_holder < config_version) {
7868
sceIoRemove("config.json");
79-
Config::SetDefault(cfg);
69+
cfg = config_t();
8070
return Config::Save(cfg);
8171
}
8272

0 commit comments

Comments
 (0)