Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/rpm-software-management/createrepo_c.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Mlcoch <tmlcoch@redhat.com>2014-04-07 19:00:42 +0400
committerTomas Mlcoch <tmlcoch@redhat.com>2014-04-07 19:01:12 +0400
commitd400d952a1cf95a0805cb61ebfa66b086ba7ace5 (patch)
treee9feb715301faddc1ef3016e04936381e8f1fa26
parenta06d34a772a12a182ff8b6f275e12e8b387fae94 (diff)
Weak deps: package: Support weak deps during copy and free
-rw-r--r--src/package.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/package.c b/src/package.c
index 8fd09ec..bb85537 100644
--- a/src/package.c
+++ b/src/package.c
@@ -105,6 +105,26 @@ cr_package_free(cr_Package *package)
g_slist_free (package->obsoletes);
}
+ if (package->suggests) {
+ g_slist_foreach (package->suggests, (GFunc) g_free, NULL);
+ g_slist_free (package->suggests);
+ }
+
+ if (package->enhances) {
+ g_slist_foreach (package->enhances, (GFunc) g_free, NULL);
+ g_slist_free (package->enhances);
+ }
+
+ if (package->recommends) {
+ g_slist_foreach (package->recommends, (GFunc) g_free, NULL);
+ g_slist_free (package->recommends);
+ }
+
+ if (package->supplements) {
+ g_slist_foreach (package->supplements, (GFunc) g_free, NULL);
+ g_slist_free (package->supplements);
+ }
+
if (package->files) {
g_slist_foreach (package->files, (GFunc) g_free, NULL);
g_slist_free (package->files);
@@ -190,10 +210,14 @@ cr_package_copy(cr_Package *orig)
pkg->location_base = cr_safe_string_chunk_insert(pkg->chunk, orig->location_base);
pkg->checksum_type = cr_safe_string_chunk_insert(pkg->chunk, orig->checksum_type);
- pkg->requires = cr_dependency_dup(pkg->chunk, orig->requires);
- pkg->provides = cr_dependency_dup(pkg->chunk, orig->provides);
- pkg->conflicts = cr_dependency_dup(pkg->chunk, orig->conflicts);
- pkg->obsoletes = cr_dependency_dup(pkg->chunk, orig->obsoletes);
+ pkg->requires = cr_dependency_dup(pkg->chunk, orig->requires);
+ pkg->provides = cr_dependency_dup(pkg->chunk, orig->provides);
+ pkg->conflicts = cr_dependency_dup(pkg->chunk, orig->conflicts);
+ pkg->obsoletes = cr_dependency_dup(pkg->chunk, orig->obsoletes);
+ pkg->suggests = cr_dependency_dup(pkg->chunk, orig->suggests);
+ pkg->enhances = cr_dependency_dup(pkg->chunk, orig->enhances);
+ pkg->recommends = cr_dependency_dup(pkg->chunk, orig->recommends);
+ pkg->supplements = cr_dependency_dup(pkg->chunk, orig->supplements);
for (GSList *elem = orig->files; elem; elem = g_slist_next(elem)) {
cr_PackageFile *orig_file = elem->data;