fix: ImHex crashing when default folders couldn't get created

This fixes #238
This commit is contained in:
WerWolv 2021-05-21 23:46:36 +02:00
parent 16a0fe4281
commit b1c597e662
2 changed files with 38 additions and 11 deletions

View File

@ -45,7 +45,11 @@ namespace hex::init {
this->m_currTaskName = name; this->m_currTaskName = name;
} }
status = task() && status; try {
status = task() && status;
} catch (...) {
status = false;
}
{ {
std::lock_guard guard(this->m_progressMutex); std::lock_guard guard(this->m_progressMutex);

View File

@ -47,15 +47,31 @@ namespace hex::init {
} }
bool createDirectories() { bool createDirectories() {
bool result = true;
std::filesystem::create_directories(hex::getPath(ImHexPath::Patterns)[0]); std::array paths = {
std::filesystem::create_directories(hex::getPath(ImHexPath::PatternsInclude)[0]); ImHexPath::Patterns,
std::filesystem::create_directories(hex::getPath(ImHexPath::Magic)[0]); ImHexPath::PatternsInclude,
std::filesystem::create_directories(hex::getPath(ImHexPath::Plugins)[0]); ImHexPath::Magic,
std::filesystem::create_directories(hex::getPath(ImHexPath::Resources)[0]); ImHexPath::Plugins,
std::filesystem::create_directories(hex::getPath(ImHexPath::Config)[0]); ImHexPath::Resources,
ImHexPath::Config
};
return true; for (auto path : paths) {
for (auto &folder : hex::getPath(path)) {
try {
std::filesystem::create_directories(folder);
} catch (...) {
result = false;
}
}
}
if (!result)
getInitArguments().push_back({ "folder-creation-error", { } });
return result;
} }
bool loadDefaultViews() { bool loadDefaultViews() {
@ -112,14 +128,21 @@ namespace hex::init {
} }
bool loadSettings() { bool loadSettings() {
ContentRegistry::Settings::load(); try {
ContentRegistry::Settings::load();
} catch (...) {
return false;
}
return true; return true;
} }
bool storeSettings() { bool storeSettings() {
ContentRegistry::Settings::store(); try {
ContentRegistry::Settings::store();
} catch (...) {
return false;
}
return true; return true;
} }