diff --git a/src/App/PropertyLinks.cpp b/src/App/PropertyLinks.cpp index a89b5343cb..4f51f3f00f 100644 --- a/src/App/PropertyLinks.cpp +++ b/src/App/PropertyLinks.cpp @@ -894,24 +894,15 @@ std::vector PropertyLinkSubList::getSubListValues() if (_lValueList.size() != _lSubList.size()) throw Base::ValueError("PropertyLinkSubList::getSubListValues: size of subelements list != size of objects list"); - std::map > tmp; for (std::size_t i = 0; i < _lValueList.size(); i++) { App::DocumentObject* link = _lValueList[i]; std::string sub = _lSubList[i]; - if (tmp.find(link) == tmp.end()) { - // make sure to keep the same order as in '_lValueList' - PropertyLinkSubList::SubSet item; - item.first = link; - values.push_back(item); + if (values.size() == 0 || values.back().first != link){ + //new object started, start a new subset. + values.push_back(SubSet(link, std::vector())); } - - tmp[link].push_back(sub); + values.back().second.push_back(sub); } - - for (std::vector::iterator it = values.begin(); it != values.end(); ++it) { - it->second = tmp[it->first]; - } - return values; }