mirror of
https://github.com/Expand-sys/CCash
synced 2025-12-17 00:22:14 +11:00
🐛 if load data was larger then max size, incorrect resize would occur
This commit is contained in:
parent
59417ccebf
commit
5a6ac776bd
1 changed files with 14 additions and 6 deletions
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue