From d0c19b8412895628c77f421f1a6d4afcb8f1153d Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 16 Feb 2017 15:56:14 +0100 Subject: [PATCH] libopkg: avoid aggregating multiple identical providers Since we might do multiple parsing runs over the feed list files in the future, ensure that we do not insert the abstract provider package multiple times into the provided_by vector. Signed-off-by: Jo-Philipp Wich --- libopkg/pkg_depends.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c index f5e6069..38ac1b6 100644 --- a/libopkg/pkg_depends.c +++ b/libopkg/pkg_depends.c @@ -683,7 +683,8 @@ abstract_pkg_t **init_providelist(pkg_t *pkg, int *count) if (!ab_pkg->pkgs) ab_pkg->pkgs = pkg_vec_alloc(); - abstract_pkg_vec_insert(ab_pkg->provided_by, ab_pkg); + if (!abstract_pkg_vec_contains(ab_pkg->provided_by, ab_pkg)) + abstract_pkg_vec_insert(ab_pkg->provided_by, ab_pkg); provides[0] = ab_pkg; provides[1] = NULL; @@ -732,7 +733,8 @@ void parse_providelist(pkg_t *pkg, char *list) provided_abpkg = ensure_abstract_pkg_by_name(item); - abstract_pkg_vec_insert(provided_abpkg->provided_by, ab_pkg); + if (!abstract_pkg_vec_contains(provided_abpkg->provided_by, ab_pkg)) + abstract_pkg_vec_insert(provided_abpkg->provided_by, ab_pkg); provides = tmp; provides[count - 1] = provided_abpkg; -- 2.30.2