[pacman-dev] [PATCH] libalpm/package.c : fix infolevel bug in pkg_dup

Xavier Chantry shiningxc at gmail.com
Thu Jul 24 20:02:17 EDT 2008


The pkg_dup function shouldn't call any alpm_pkg_get_ accessors because
this can fill the old package with all INFRQ_DESC fields for example, and
this won't necessarily be reproduced in the new package (for all the fields
that were copied before).

Signed-off-by: Xavier Chantry <shiningxc at gmail.com>
---
 lib/libalpm/package.c |   21 ++++++++++-----------
 1 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index e7d3ec1..348ed45 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -778,19 +778,18 @@ pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg)
 	newpkg->force = pkg->force;
 	newpkg->reason = pkg->reason;
 
-	newpkg->licenses   = alpm_list_strdup(alpm_pkg_get_licenses(pkg));
-	newpkg->replaces   = alpm_list_strdup(alpm_pkg_get_replaces(pkg));
-	newpkg->groups     = alpm_list_strdup(alpm_pkg_get_groups(pkg));
-	newpkg->files      = alpm_list_strdup(alpm_pkg_get_files(pkg));
-	newpkg->backup     = alpm_list_strdup(alpm_pkg_get_backup(pkg));
-	for(i = alpm_pkg_get_depends(pkg); i; i = alpm_list_next(i)) {
+	newpkg->licenses   = alpm_list_strdup(pkg->licenses);
+	newpkg->replaces   = alpm_list_strdup(pkg->replaces);
+	newpkg->groups     = alpm_list_strdup(pkg->groups);
+	newpkg->files      = alpm_list_strdup(pkg->files);
+	newpkg->backup     = alpm_list_strdup(pkg->backup);
+	for(i = pkg->depends; i; i = alpm_list_next(i)) {
 		newpkg->depends = alpm_list_add(newpkg->depends, _alpm_dep_dup(i->data));
 	}
-	newpkg->optdepends = alpm_list_strdup(alpm_pkg_get_optdepends(pkg));
-	newpkg->conflicts  = alpm_list_strdup(alpm_pkg_get_conflicts(pkg));
-	newpkg->provides   = alpm_list_strdup(alpm_pkg_get_provides(pkg));
-	newpkg->deltas     = alpm_list_copy_data(alpm_pkg_get_deltas(pkg),
-																					 sizeof(pmdelta_t));
+	newpkg->optdepends = alpm_list_strdup(pkg->optdepends);
+	newpkg->conflicts  = alpm_list_strdup(pkg->conflicts);
+	newpkg->provides   = alpm_list_strdup(pkg->provides);
+	newpkg->deltas     = alpm_list_copy_data(pkg->deltas, sizeof(pmdelta_t));
 
 	/* internal */
 	newpkg->origin = pkg->origin;
-- 
1.5.6.4





More information about the pacman-dev mailing list