summaryrefslogtreecommitdiffstats
path: root/lib/entry/libimagentrylink
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2019-06-23 11:05:42 +0200
committerMatthias Beyer <mail@beyermatthias.de>2019-06-23 11:06:19 +0200
commit59ddb70345864041d6d44b90a7108f13074a581e (patch)
tree6f5bebe50d0776a2bea3fb072e53247ab06cde58 /lib/entry/libimagentrylink
parentd89a700fd1e1722b38d64118e7680670d58f9194 (diff)
Fix: Make sure links are sorted and deduplicated
Diffstat (limited to 'lib/entry/libimagentrylink')
-rw-r--r--lib/entry/libimagentrylink/src/linkable.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/entry/libimagentrylink/src/linkable.rs b/lib/entry/libimagentrylink/src/linkable.rs
index e571a20f..104e6421 100644
--- a/lib/entry/libimagentrylink/src/linkable.rs
+++ b/lib/entry/libimagentrylink/src/linkable.rs
@@ -98,9 +98,15 @@ impl Linkable for Entry {
let mut left_internal = left.internal.unwrap_or_else(|| vec![]);
left_internal.push(right_location);
+ left_internal.sort_unstable();
+ left_internal.dedup();
+
let mut right_internal = right.internal.unwrap_or_else(|| vec![]);
right_internal.push(left_location);
+ right_internal.sort_unstable();
+ right_internal.dedup();
+
left.internal = Some(left_internal);
right.internal = Some(right_internal);
@@ -117,9 +123,15 @@ impl Linkable for Entry {
let mut left_internal = left.internal.unwrap_or_else(|| vec![]);
left_internal.retain(|l| *l != right_location);
+ left_internal.sort_unstable();
+ left_internal.dedup();
+
let mut right_internal = right.internal.unwrap_or_else(|| vec![]);
right_internal.retain(|l| *l != left_location);
+ right_internal.sort_unstable();
+ right_internal.dedup();
+
left.internal = Some(left_internal);
right.internal = Some(right_internal);