diff options
author | graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2009-11-23 21:35:28 (EST) |
---|---|---|
committer | graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2009-11-23 21:35:28 (EST) |
commit | 0673e730b861851f27505447862e942599d6705b (patch) | |
tree | a75cb85a76d6fa03867693381b69240bf181de87 /libopkg/pkg_depends.c | |
parent | 22be42698db49235c24dbed4366d197a8342b064 (diff) |
Remove remaining uses of pkg->*_str arrays and free() them after parsing.
Saves about 800kb in peak memory usage for my package list (6000 packages).
git-svn-id: http://opkg.googlecode.com/svn/trunk@356 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg/pkg_depends.c')
-rw-r--r-- | libopkg/pkg_depends.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c index 67924bd..813ec6a 100644 --- a/libopkg/pkg_depends.c +++ b/libopkg/pkg_depends.c @@ -647,26 +647,38 @@ void buildDepends(hash_table_t * hash, pkg_t * pkg) for(i = 0; i < pkg->pre_depends_count; i++){ parseDepends(depends, hash, pkg->pre_depends_str[i]); + free(pkg->pre_depends_str[i]); depends->type = PREDEPEND; depends++; } + if (pkg->pre_depends_str) + free(pkg->pre_depends_str); for(i = 0; i < pkg->depends_count; i++){ parseDepends(depends, hash, pkg->depends_str[i]); + free(pkg->depends_str[i]); depends++; } + if (pkg->depends_str) + free(pkg->depends_str); for(i = 0; i < pkg->recommends_count; i++){ parseDepends(depends, hash, pkg->recommends_str[i]); + free(pkg->recommends_str[i]); depends->type = RECOMMEND; depends++; } + if(pkg->recommends_str) + free(pkg->recommends_str); for(i = 0; i < pkg->suggests_count; i++){ parseDepends(depends, hash, pkg->suggests_str[i]); + free(pkg->suggests_str[i]); depends->type = SUGGEST; depends++; } + if(pkg->suggests_str) + free(pkg->suggests_str); } const char* |