From 71cfb447ce0ca4d8720d595d0b7d254abacf48dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Mon, 1 Aug 2016 11:32:44 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@109 a8b55f48-bf90-11e4-a774-851b48703e85 --- cd_utils/cdutils_k_types.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cd_utils/cdutils_k_types.cpp b/cd_utils/cdutils_k_types.cpp index 671f182..5156bc4 100644 --- a/cd_utils/cdutils_k_types.cpp +++ b/cd_utils/cdutils_k_types.cpp @@ -103,6 +103,7 @@ void KSection::read(const void * ep) { void KSection::update(KSection & v, bool keep_names) { PIMap vk_ids; + PISet used; PIMap::iterator i; for (i = v.k.begin(); i != v.k.end(); ++i) vk_ids[i.value().name()] = i.value().formula(); @@ -113,13 +114,25 @@ void KSection::update(KSection & v, bool keep_names) { continue; } } - if (v.k.contains(i.key())) + if (v.k.contains(i.key())) { k[i.key()].formula_ = v.k[i.key()].formula_; + used << i.key(); + } } + for (i = v.k.begin(); i != v.k.end(); ++i) { + if (!used.contains(i.key())) + k[i.key()] = i.value(); + } + used.clear(); 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); + used << j.key(); + } + for (j = v.s.begin(); j != v.s.end(); ++j) { + if (!used.contains(j.key())) + s[j.key()] = j.value(); } }