From: Tomas Mlcoch Date: Fri, 17 Oct 2014 10:40:29 +0000 (+0200) Subject: deltarpms: Fix few memory leaks X-Git-Tag: upstream/0.10.0~164 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ab3cd0a81855b2a447193f50225eca3c75af689f;p=services%2Fcreaterepo_c.git deltarpms: Fix few memory leaks --- diff --git a/src/deltarpms.c b/src/deltarpms.c index 1e5550d..5827815 100644 --- a/src/deltarpms.c +++ b/src/deltarpms.c @@ -379,6 +379,7 @@ cr_delta_thread(gpointer data, gpointer udata) user_data->active_tasks--; g_cond_signal(user_data->cond_task_finished); g_mutex_unlock(user_data->mutex); + g_free(task); } @@ -496,6 +497,8 @@ cr_deltarpms_parallel_deltas(GSList *targetpackages, g_thread_pool_free(pool, FALSE, TRUE); g_list_free(targets); + g_mutex_free(user_data.mutex); + g_cond_free(user_data.cond_task_finished); } @@ -704,6 +707,7 @@ walk_drpmsdir(const gchar *drpmsdir, GSList **inlist, GError **err) candidates = g_slist_prepend(candidates, task); } g_free(dirname); + g_dir_close(dirp); } *inlist = candidates; @@ -880,7 +884,8 @@ cr_deltarpms_generate_prestodelta_file(const gchar *drpmsdir, if (tmp_err) { g_propagate_prefixed_error(err, tmp_err, "Cannot create pool for prestodelta file generation: "); - return FALSE; + ret = FALSE; + goto exit; } // Push tasks to the pool @@ -903,10 +908,13 @@ cr_deltarpms_generate_prestodelta_file(const gchar *drpmsdir, chunk = gen_newpackage_xml_chunk(nevra, (GSList *) value, NULL); cr_xmlfile_add_chunk(f, chunk, NULL); + g_free(chunk); } exit: g_slist_free_full(candidates, (GDestroyNotify) cr_prestodeltatask_free); + g_mutex_free(user_data.mutex); + g_hash_table_destroy(ht); return ret; }