From 46db2198db02ed75562dd331d68ddbbbb1f1cff4 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sun, 23 Feb 2014 11:20:04 +0000 Subject: [PATCH] fixed memleak --- src/ppastats.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/ppastats.c b/src/ppastats.c index 74ed02b..754cf4e 100644 --- a/src/ppastats.c +++ b/src/ppastats.c @@ -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); } -- 2.7.4