summaryrefslogtreecommitdiffstats
path: root/libopkg/pkg.c
diff options
context:
space:
mode:
Diffstat (limited to 'libopkg/pkg.c')
-rw-r--r--libopkg/pkg.c53
1 files changed, 34 insertions, 19 deletions
diff --git a/libopkg/pkg.c b/libopkg/pkg.c
index d9bae89..6793c82 100644
--- a/libopkg/pkg.c
+++ b/libopkg/pkg.c
@@ -142,6 +142,19 @@ int pkg_init(pkg_t *pkg)
return 0;
}
+void compound_depend_deinit (compound_depend_t *depends)
+{
+ int i;
+ for (i = 0; i < depends->possibility_count; i++)
+ {
+ depend_t *d;
+ d = depends->possibilities[i];
+ free (d->version);
+ free (d);
+ }
+ free (depends->possibilities);
+}
+
void pkg_deinit(pkg_t *pkg)
{
int i;
@@ -171,35 +184,39 @@ void pkg_deinit(pkg_t *pkg)
pkg->state_flag = SF_OK;
pkg->state_status = SS_NOT_INSTALLED;
+ //for (i = 0; i < pkg->replaces_count; i++)
+ free (pkg->replaces);
+ pkg->replaces = NULL;
+
for (i = 0; i < pkg->depends_count; i++)
free (pkg->depends_str[i]);
free(pkg->depends_str);
pkg->depends_str = NULL;
- pkg->depends_count = 0;
for (i = 0; i < pkg->provides_count; i++)
free (pkg->provides_str[i]);
free(pkg->provides_str);
pkg->provides_str = NULL;
- pkg->provides_count = 0;
for (i = 0; i < pkg->conflicts_count; i++)
free (pkg->conflicts_str[i]);
free(pkg->conflicts_str);
pkg->conflicts_str = NULL;
- pkg->conflicts_count = 0;
for (i = 0; i < pkg->replaces_count; i++)
free (pkg->replaces_str[i]);
free(pkg->replaces_str);
pkg->replaces_str = NULL;
- pkg->replaces_count = 0;
for (i = 0; i < pkg->recommends_count; i++)
free (pkg->recommends_str[i]);
free(pkg->recommends_str);
pkg->recommends_str = NULL;
- pkg->recommends_count = 0;
+
+ for (i = 0; i < pkg->suggests_count; i++)
+ free (pkg->suggests_str[i]);
+ free(pkg->suggests_str);
+ pkg->suggests_str = NULL;
if (pkg->depends)
{
@@ -207,23 +224,19 @@ void pkg_deinit(pkg_t *pkg)
int x;
for (x = 0; x < count; x++)
- {
- compound_depend_t *depends;
- depends = &pkg->depends[x];
-
- for (i = 0; i < depends->possibility_count; i++)
- {
- depend_t *d;
- d = depends->possibilities[i];
- free (d->version);
- free (d);
- }
- free (depends->possibilities);
- }
+ compound_depend_deinit (&pkg->depends[x]);
free (pkg->depends);
}
+
+ if (pkg->conflicts)
+ {
+ int x;
+ for (x = 0; x < pkg->conflicts_count; x++)
+ compound_depend_deinit (&pkg->conflicts[x]);
+ free (pkg->conflicts);
+ }
+
free (pkg->provides);
- free (pkg->conflicts);
pkg->pre_depends_count = 0;
free(pkg->pre_depends_str);
@@ -1398,6 +1411,7 @@ int pkg_free_installed_files(pkg_t *pkg)
}
str_list_deinit(pkg->installed_files);
+ free (pkg->installed_files);
}
pkg->installed_files = NULL;
@@ -1800,5 +1814,6 @@ int pkg_write_changed_filelists(opkg_conf_t *conf)
opkg_message(conf, OPKG_NOTICE, "pkg_write_filelist pkg=%s returned %d\n", pkg->name, err);
}
}
+ pkg_vec_free (installed_pkgs);
return 0;
}