From f75ee7176235f2c1a531113985d715ddcafb6d05 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 14 Nov 2007 22:51:16 -0600 Subject: Fix alpm_list_copy_data So I spent a good 4 hours tracking a bug down tonight due to alpm_list_copy_data not actually doing what I expected to do. We can't find the size of an object we don't know the type of, so rewrite it so we pass in the size explicitly. This was making _alpm_pkg_dup fail and causing all sorts of other issues. Signed-off-by: Dan McGee --- lib/libalpm/package.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/libalpm/package.c') diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 2c6fc29c..d9927668 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -675,12 +675,14 @@ pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg) newpkg->conflicts = alpm_list_strdup(alpm_pkg_get_conflicts(pkg)); newpkg->files = alpm_list_strdup(alpm_pkg_get_files(pkg)); newpkg->backup = alpm_list_strdup(alpm_pkg_get_backup(pkg)); - newpkg->depends = alpm_list_copy_data(alpm_pkg_get_depends(pkg)); + newpkg->depends = alpm_list_copy_data(alpm_pkg_get_depends(pkg), + sizeof(pmdepend_t)); newpkg->optdepends = alpm_list_strdup(alpm_pkg_get_optdepends(pkg)); newpkg->groups = alpm_list_strdup(alpm_pkg_get_groups(pkg)); newpkg->provides = alpm_list_strdup(alpm_pkg_get_provides(pkg)); newpkg->replaces = alpm_list_strdup(alpm_pkg_get_replaces(pkg)); - newpkg->deltas = alpm_list_copy_data(alpm_pkg_get_deltas(pkg)); + newpkg->deltas = alpm_list_copy_data(alpm_pkg_get_deltas(pkg), + sizeof(pmdelta_t)); /* internal */ if(newpkg->origin == PKG_FROM_FILE) { newpkg->origin_data.file = strdup(pkg->origin_data.file); -- cgit v1.2.3-2-g168b