fixed memleak
authorJean-Philippe Orsini <jeanfi@gmail.com>
Sun, 23 Feb 2014 11:20:04 +0000 (11:20 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Sun, 23 Feb 2014 11:20:04 +0000 (11:20 +0000)
src/ppastats.c

index 74ed02b..754cf4e 100644 (file)
@@ -181,7 +181,6 @@ static struct daily_download_total **add_total
 
        result = (struct daily_download_total **)list_add((void **)totals,
                                                          ddt_clone(total));
-
        return result;
 }
 
@@ -241,6 +240,20 @@ pkg_add_distro(struct package_stats *pkg,
        pkg_distro->ddts = tmp_ddts;
 }
 
+static struct ppa_stats *ppa_stats_new(const char *owner, const char *ppa_name)
+{
+       struct ppa_stats *ppa;
+
+       ppa = malloc(sizeof(struct ppa_stats));
+       ppa->name = strdup(ppa_name);
+       ppa->owner = strdup(owner);
+       ppa->packages = NULL;
+       ppa->daily_download_totals = NULL;
+       ppa->download_count = 0;
+
+       return ppa;
+}
+
 struct ppa_stats *
 create_ppa_stats(const char *owner,
                 const char *ppa_name,
@@ -268,12 +281,7 @@ create_ppa_stats(const char *owner,
                exit(EXIT_FAILURE);
        }
 
-       ppa = malloc(sizeof(struct ppa_stats));
-       ppa->name = strdup(ppa_name);
-       ppa->owner = strdup(owner);
-       ppa->packages = NULL;
-       ppa->daily_download_totals = NULL;
-       ppa->download_count = 0;
+       ppa = ppa_stats_new(owner, ppa_name);
 
        for (h_cur = history; *h_cur; ++h_cur) {
                h = *h_cur;
@@ -346,6 +354,8 @@ static void distro_stats_free(struct distro_stats *distro)
                free(distro->archs);
        }
 
+       daily_download_total_list_free(distro->ddts);
+
        free(distro->name);
        free(distro);
 }
@@ -373,6 +383,8 @@ static void version_stats_free(struct version_stats *version)
                free(version->distros);
        }
 
+       daily_download_total_list_free(version->daily_download_totals);
+
        free(version->version);
        free(version);
 }
@@ -390,6 +402,7 @@ static void package_stats_free(struct package_stats *package)
                free(package->versions);
        }
        distro_stats_list_free(package->distros);
+       daily_download_total_list_free(package->daily_download_totals);
        free(package->name);
        free(package);
 }