Skip to content

Commit 9c842f0

Browse files
committed
Merge branch 'master' of https://github.com/arrayio/array-io-keychain into macos-installer
2 parents 3c433dc + 1e97210 commit 9c842f0

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

keychain_lib/src/keyfile_singleton.cpp

+19-4
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,13 @@ void keyfile_singleton::keydata_load()
6464
std::for_each(first, bfs::directory_iterator(), [this](const auto& unit) {
6565
try {
6666
fc_light::variant j_keyfile = open_keyfile(unit.path().c_str());
67-
m_keydata_map.insert(j_keyfile.as<keyfile_format::keyfile_t>());
67+
auto keyfile = j_keyfile.as<keyfile_format::keyfile_t>();
68+
auto& ind = prim_index();
69+
auto it = ind.find(keyfile.public_key());
70+
if(it == ind.end())
71+
m_keydata_map.insert(keyfile);
72+
else
73+
m_keydata_map.replace(it, keyfile);
6874
}
6975
catch (fc_light::parse_error_exception& er) {
7076
return print_exception(unit.path(), er);
@@ -98,9 +104,18 @@ void keyfile_singleton::signlog_load()
98104
try {
99105
fc_light::variant j_keyfile = open_keyfile(unit.path().c_str());
100106
auto file = j_keyfile.as<keyfile_format::signlog_file_t>();
101-
auto res = m_signlog_map.insert(signlog_map_t::value_type(file.public_key,log_records_t()));
102-
FC_LIGHT_ASSERT(res.second);
103-
auto it = res.first;
107+
auto found_it = m_signlog_map.find(file.public_key);
108+
auto it = m_signlog_map.end();
109+
if(found_it == m_signlog_map.end())
110+
{
111+
auto res = m_signlog_map.insert(signlog_map_t::value_type(file.public_key,log_records_t()));
112+
FC_LIGHT_ASSERT(res.second);
113+
it = res.first;
114+
} else
115+
{
116+
found_it->second.clear();
117+
it = found_it;
118+
}
104119
auto& logmap = it->second;
105120
std::copy(file.sign_events.begin(), file.sign_events.end(), std::inserter(logmap, logmap.begin()));
106121
}

0 commit comments

Comments
 (0)