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, 16 insertions, 15 deletions
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc index 01e4ec46e0..dee1a7c9c7 100644 --- a/src/components/smart_objects/src/object_schema_item.cc +++ b/src/components/smart_objects/src/object_schema_item.cc @@ -57,7 +57,8 @@ 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()) { @@ -251,25 +252,21 @@ 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();) { + for (SmartMap::const_iterator it = Object.map_begin(); it != Object.map_end(); + ++it) { const std::string& key = it->first; std::map<std::string, SMember>::const_iterator members_it = mMembers.find(key); - 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); - } else if (mMembers.end() != members_it && - GetCorrectMember(members_it->second, MessageVersion) - .mIsRemoved) { - ++it; + if (mMembers.end() == members_it && key.compare(connection_key) != 0 && + key.compare(binary_data) != 0 && key.compare(app_id) != 0) { Object.erase(key); - } else { - ++it; + } + + if (mMembers.end() != members_it) { + if (GetCorrectMember(members_it->second, MessageVersion).mIsRemoved) { + Object.erase(key); + } } } } @@ -288,6 +285,10 @@ 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; } |