From 4d4d3b32cba5be0fe9a686ee74d1de818de8be80 Mon Sep 17 00:00:00 2001 From: lgoubet Date: Fri, 6 Sep 2019 14:40:36 +0200 Subject: [PATCH] Index issue when merging non-unique attributes' elements Change-Id: Ic05460d8df2adf2b95d376d651eb03061b50cdad --- .../src/org/eclipse/emf/compare/merge/AttributeChangeMerger.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/org.eclipse.emf.compare/src/org/eclipse/emf/compare/merge/AttributeChangeMerger.java b/plugins/org.eclipse.emf.compare/src/org/eclipse/emf/compare/merge/AttributeChangeMerger.java index c7ac57d40..11c53cc4b 100644 --- a/plugins/org.eclipse.emf.compare/src/org/eclipse/emf/compare/merge/AttributeChangeMerger.java +++ b/plugins/org.eclipse.emf.compare/src/org/eclipse/emf/compare/merge/AttributeChangeMerger.java @@ -471,6 +471,13 @@ public class AttributeChangeMerger extends AbstractMerger { // Then the index, in the target, at which this value needs to be moved int insertionIndex = DiffUtil.findInsertionIndexForElementAt(comparison, sourceList, copyTarget, lcs, currentIndexInSource); + /* + * However, it could still have been located "before" its new index, in which case we need to take it + * into account. + */ + if (insertionIndex > currentIndexInTarget) { + insertionIndex--; + } if (targetList instanceof EList) { if (insertionIndex < 0 || insertionIndex >= targetList.size()) { -- 2.11.4.GIT