@@ -12,59 +12,49 @@ config_t cfg;
1212namespace 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