diff options
author | graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2009-11-18 23:41:29 (EST) |
---|---|---|
committer | graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2009-11-18 23:41:29 (EST) |
commit | 97e125627ab4fd1ceb974a8a0f4b836403dbaa94 (patch) | |
tree | 0f1fa58fef9f0a2a8d42a46def15084feeec89cf /libopkg/pkg_depends.c | |
parent | c9fc602ad5c318d50707393caf62d1468697f500 (diff) |
Free some strings as soon as they are parsed to save memory.
git-svn-id: http://opkg.googlecode.com/svn/trunk@337 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg/pkg_depends.c')
-rw-r--r-- | libopkg/pkg_depends.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c index 10a8ab5..b28f68d 100644 --- a/libopkg/pkg_depends.c +++ b/libopkg/pkg_depends.c @@ -576,11 +576,14 @@ void buildProvides(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg) for (i=1; i<pkg->provides_count; i++) { abstract_pkg_t *provided_abpkg = ensure_abstract_pkg_by_name(hash, pkg->provides_str[i-1]); + free(pkg->provides_str[i-1]); pkg->provides[i] = provided_abpkg; abstract_pkg_vec_insert(provided_abpkg->provided_by, ab_pkg); } + if (pkg->provides_str) + free(pkg->provides_str); } /* Abhaya: added conflicts support */ @@ -597,8 +600,11 @@ void buildConflicts(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg) conflicts->type = CONFLICTS; parseDepends(conflicts, hash, pkg->conflicts_str[i]); + free(pkg->conflicts_str[i]); conflicts++; } + if (pkg->conflicts_str) + free(pkg->conflicts_str); } void buildReplaces(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg) @@ -614,6 +620,7 @@ void buildReplaces(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg) abstract_pkg_t *old_abpkg = ensure_abstract_pkg_by_name(hash, pkg->replaces_str[i]); pkg->replaces[i] = old_abpkg; + free(pkg->replaces_str[i]); if (!old_abpkg->replaced_by) old_abpkg->replaced_by = abstract_pkg_vec_alloc(); @@ -623,6 +630,9 @@ void buildReplaces(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg) if (pkg_conflicts_abstract(pkg, old_abpkg)) abstract_pkg_vec_insert(old_abpkg->replaced_by, ab_pkg); } + + if (pkg->replaces_str) + free(pkg->replaces_str); } void buildDepends(hash_table_t * hash, pkg_t * pkg) |