diff --git a/include/user.hpp b/include/user.hpp index a1f98f9..17ccb26 100644 --- a/include/user.hpp +++ b/include/user.hpp @@ -31,13 +31,21 @@ struct User * @param init_pass */ User(uint32_t init_bal, uint64_t init_pass) : balance(init_bal), password(init_pass) {} - User(uint32_t init_bal, uint64_t init_pass, Json::Value&& log_j) : balance(init_bal), password(init_pass) + User(uint32_t init_bal, uint64_t init_pass, Json::Value &&log_j) : balance(init_bal), password(init_pass) { - if(log_j.size()) + if (log_j.size()) { - log.data.resize(log_j.size()+pre_log_size); - log.end = log_j.size(); - for(uint32_t i = 0; i < log_j.size() && i < max_log_size; ++i) + if (max_log_size > log_j.size() + pre_log_size) + { + log.data.resize(log_j.size() + pre_log_size); + log.end = log_j.size(); + } + else + { + log.data.resize(max_log_size); + log.end = max_log_size; + } + for (uint32_t i = 0; i < log_j.size() && i < max_log_size; ++i) { log.data[i] = std::move(Transaction(log_j[i]["from"].asCString(), log_j[i]["to"].asCString(), log_j[i]["balance"].asUInt())); } @@ -52,4 +60,4 @@ struct User res["log"] = log.Serialize(); return res; } -}; \ No newline at end of file +};