diff options
Diffstat (limited to 'src/components/smart_objects/src/object_schema_item.cc')
-rw-r--r-- | src/components/smart_objects/src/object_schema_item.cc | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc index dee1a7c9c7..01e4ec46e0 100644 --- a/src/components/smart_objects/src/object_schema_item.cc +++ b/src/components/smart_objects/src/object_schema_item.cc @@ -57,8 +57,7 @@ SMember::SMember(const ISchemaItemPtr SchemaItem, const bool IsDeprecated, const bool IsRemoved, const std::vector<SMember>& history_vector) - : mSchemaItem(SchemaItem) - , mIsMandatory(IsMandatory) { + : mSchemaItem(SchemaItem), mIsMandatory(IsMandatory) { if (Since.size() > 0) { utils::SemanticVersion since_struct(Since); if (since_struct.isValid()) { @@ -252,21 +251,25 @@ CObjectSchemaItem::CObjectSchemaItem(const Members& members) void CObjectSchemaItem::RemoveFakeParams( SmartObject& Object, const utils::SemanticVersion& MessageVersion) { - for (SmartMap::const_iterator it = Object.map_begin(); it != Object.map_end(); - ++it) { + for (SmartMap::const_iterator it = Object.map_begin(); + it != Object.map_end();) { const std::string& key = it->first; std::map<std::string, SMember>::const_iterator members_it = mMembers.find(key); - - if (mMembers.end() == members_it && key.compare(connection_key) != 0 && - key.compare(binary_data) != 0 && key.compare(app_id) != 0) { + if (mMembers.end() == members_it + // FIXME(EZamakhov): Remove illegal usage of filed in AM + && key.compare(connection_key) != 0 && key.compare(binary_data) != 0 && + key.compare(app_id) != 0) { + ++it; Object.erase(key); - } - if (mMembers.end() != members_it) { - if (GetCorrectMember(members_it->second, MessageVersion).mIsRemoved) { - Object.erase(key); - } + } else if (mMembers.end() != members_it && + GetCorrectMember(members_it->second, MessageVersion) + .mIsRemoved) { + ++it; + Object.erase(key); + } else { + ++it; } } } @@ -285,10 +288,6 @@ const SMember& CObjectSchemaItem::GetCorrectMember( } } } - - // If member didn't pass checks above then - // it becomes not valid and must be removed. - member.mIsRemoved = true; // Return member as default return member; } |