🐛 concurrent del user & adding log entry would allow a ghost log to be made

This commit is contained in:
EntireTwix 2021-04-21 21:42:30 -07:00
parent 7d38974ba0
commit 417f52253b

View file

@ -128,18 +128,22 @@ public:
Transaction temp(a_name, b_name, amount); Transaction temp(a_name, b_name, amount);
Transaction temp2(a_name, b_name, amount); Transaction temp2(a_name, b_name, amount);
users.if_contains(a_name, [&temp, &a_name](const User &u) {
if (logs.try_emplace_l(a_name, [&temp](Log &l) { l.AddTrans(std::move(temp)); })) if (logs.try_emplace_l(a_name, [&temp](Log &l) { l.AddTrans(std::move(temp)); }))
{ {
logs.modify_if(a_name, [&temp](Log &l) { logs.modify_if(a_name, [&temp](Log &l) {
l.AddTrans(std::move(temp)); l.AddTrans(std::move(temp));
}); });
} }
});
users.if_contains(a_name, [&temp, &a_name](const User &u) {
if (logs.try_emplace_l(b_name, [&temp2](Log &l) { l.AddTrans(std::move(temp2)); })) if (logs.try_emplace_l(b_name, [&temp2](Log &l) { l.AddTrans(std::move(temp2)); }))
{ {
logs.modify_if(b_name, [&temp2](Log &l) { logs.modify_if(b_name, [&temp2](Log &l) {
l.AddTrans(std::move(temp2)); l.AddTrans(std::move(temp2));
}); });
} }
});
} }
return state; return state;