aboutsummaryrefslogtreecommitdiff
path: root/src/manifest.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2020-01-28 21:42:55 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2020-01-28 21:42:55 -0500
commit7c2b1baad8434f9f7b19efe48719942cb3bce4cd (patch)
tree79666a768eb3392ddea57a78c57531d00a145769 /src/manifest.c
parent8b06e3e66a4cf26c02f9e0175263e1a561186c1b (diff)
downloadspmc-7c2b1baad8434f9f7b19efe48719942cb3bce4cd.tar.gz
Fix more memory leaks:
Add ability to free ManifestPackage structure Fix bug: manifest_search pointer got free()ed accidentally.
Diffstat (limited to 'src/manifest.c')
-rw-r--r--src/manifest.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/manifest.c b/src/manifest.c
index 9926fa5..90c8087 100644
--- a/src/manifest.c
+++ b/src/manifest.c
@@ -100,19 +100,25 @@ Manifest *manifest_from(const char *package_dir) {
*/
void manifest_free(Manifest *info) {
for (size_t i = 0; i < info->records; i++) {
- if (info->packages[i]->requirements != NULL) {
- for (int j = 0; info->packages[i]->requirements[j] != NULL; j++) {
- free(info->packages[i]->requirements[j]);
- }
- free(info->packages[i]->requirements);
- }
- free(info->packages[i]);
+ manifest_package_free(info->packages[i]);
}
free(info->packages);
free(info);
}
/**
+ * Free a `ManifestPackage` structure
+ * @param info `ManifestPackage`
+ */
+void manifest_package_free(ManifestPackage *info) {
+ for (size_t i = 0; i < info->requirements_records; i++) {
+ free(info->requirements[i]);
+ }
+ free(info->requirements);
+ free(info);
+}
+
+/**
* Write a `Manifest` to the configuration directory
* @param info
* @param outfile
@@ -219,7 +225,7 @@ int fetch(const char *url, const char *dest) {
handle = url_fopen(url, "r");
if(!handle) {
- printf("couldn't url_fopen() %s\n", url);
+ fprintf(stderr, "couldn't url_fopen() %s\n", url);
return 2;
}