diff --git a/cd_utils/cdutils_k_types.cpp b/cd_utils/cdutils_k_types.cpp index 6db7c65..0f321fe 100644 --- a/cd_utils/cdutils_k_types.cpp +++ b/cd_utils/cdutils_k_types.cpp @@ -79,7 +79,28 @@ void KSection::read(const void * ep) { void KSection::update(KSection & v, bool keep_names) { - + PIMap vk_ids; + PIMap::iterator i; + for (i = v.k.begin(); i != v.k.end(); ++i) + vk_ids[i.value().name()] = i.value().formula(); + for (i = k.begin(); i != k.end(); ++i) { + bool f = false; + if (keep_names) { + if (vk_ids.contains(i.value().name())) { + k[i.key()].formula_ = vk_ids[i.value().name()]; + f = true; + } + } + if (!f) { + if (v.k.contains(i.key())) + k[i.key()].formula_ = v.k[i.key()].formula_; + } + } + PIMap::iterator j; + for (j = s.begin(); j != s.end(); ++j) { + if (v.s.contains(j.key())) + j.value().update(v.s[j.key()], keep_names); + } }