🐛🔥🔒 possible safety concern if interior while auto saving

May corrupt as static, one thread could clear as the other is copying for example
This commit is contained in:
William Katz 2021-07-15 01:47:27 -07:00 committed by GitHub
parent cc17c3f8d3
commit 2d62f51006
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -289,12 +289,12 @@ const char *Bank::Save()
) )
{ {
#endif #endif
static std::ofstream users_save(users_location, std::ios::out | std::ios::binary); std::ofstream users_save(users_location, std::ios::out | std::ios::binary);
if (!users_save.is_open()) if (!users_save.is_open())
{ {
throw std::invalid_argument("Cannot access saving file\n"); throw std::invalid_argument("Cannot access saving file\n");
} }
static bank_dom::Global users_copy; bank_dom::Global users_copy;
users_copy.users.clear(); users_copy.users.clear();
users_copy.keys.clear(); users_copy.keys.clear();
users_copy.users.reserve(users.size()); users_copy.users.reserve(users.size());
@ -310,7 +310,7 @@ const char *Bank::Save()
}); });
} }
} }
static FBE::bank_dom::GlobalFinalModel writer; FBE::bank_dom::GlobalFinalModel writer;
writer.serialize(users_copy); writer.serialize(users_copy);
if (!writer.verify()) if (!writer.verify())
{ {