diff options
Diffstat (limited to 'serialize.cpp')
-rw-r--r-- | serialize.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/serialize.cpp b/serialize.cpp index 8e957272b..a499798c4 100644 --- a/serialize.cpp +++ b/serialize.cpp @@ -26,15 +26,24 @@ void storeToFile(std::string versionId, uint8_t priority) oarchive(cereal::make_nvp("priority", priority)); } -void restoreFromFile(std::string versionId, uint8_t *priority) +bool restoreFromFile(std::string versionId, uint8_t& priority) { std::string path = PERSIST_DIR + versionId; if (fs::exists(path)) { std::ifstream is(path.c_str(), std::ios::in); - cereal::JSONInputArchive iarchive(is); - iarchive(cereal::make_nvp("priority", *priority)); + try + { + cereal::JSONInputArchive iarchive(is); + iarchive(cereal::make_nvp("priority", priority)); + return true; + } + catch(cereal::RapidJSONException& e) + { + fs::remove(path); + } } + return false; } void removeFile(std::string versionId) |