From 8fcd8ab2fae7858c802cddeebb03dc1197e625a1 Mon Sep 17 00:00:00 2001 From: Alan Fitton Date: Wed, 21 Dec 2011 22:13:28 +0000 Subject: fix memory leak on new fileicon cell renderer --- src/trg-files-model.c | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'src/trg-files-model.c') diff --git a/src/trg-files-model.c b/src/trg-files-model.c index 3da542a..db62961 100644 --- a/src/trg-files-model.c +++ b/src/trg-files-model.c @@ -17,9 +17,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include #include +#include "protocol-constants.h" #include "trg-files-model.h" #include "trg-client.h" #include "torrent.h" @@ -86,20 +88,26 @@ struct updateAllArgs { static gboolean trg_files_update_all_parents(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { struct updateAllArgs *args = (struct updateAllArgs*) data; - GtkTreePath *descendentPath = gtk_tree_model_get_path(model, - args->descendentIter); - - if (args->increment > 0 && gtk_tree_path_is_ancestor(path, descendentPath)) { - gint64 lastCompleted, newCompleted, length; - gtk_tree_model_get(model, iter, FILESCOL_BYTESCOMPLETED, &lastCompleted, - FILESCOL_SIZE, &length, -1); - newCompleted = lastCompleted + args->increment; - gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_BYTESCOMPLETED, - newCompleted, FILESCOL_PROGRESS, - file_get_progress(length, newCompleted), -1); - } - gtk_tree_path_free(descendentPath); + if (args->increment > 0) { + GtkTreePath *descendentPath = gtk_tree_model_get_path(model, + args->descendentIter); + + if (gtk_tree_path_is_ancestor(path, descendentPath)) { + gint64 lastCompleted, newCompleted, length; + + gtk_tree_model_get(model, iter, FILESCOL_BYTESCOMPLETED, &lastCompleted, + FILESCOL_SIZE, &length, -1); + newCompleted = lastCompleted + args->increment; + + gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_BYTESCOMPLETED, + newCompleted, FILESCOL_PROGRESS, + file_get_progress(length, newCompleted), -1); + + } + + gtk_tree_path_free(descendentPath); + } return FALSE; } @@ -168,9 +176,10 @@ static void trg_files_model_iter_new(TrgFilesModel * model, GtkTreeIter * iter, g_value_init(&gvalue, G_TYPE_INT); g_value_set_int(&gvalue, -1); gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, FILESCOL_ID, &gvalue); + memset(&gvalue, 0, sizeof(GValue)); g_value_init(&gvalue, G_TYPE_INT64); - g_value_set_int64(&gvalue, -2); + g_value_set_int64(&gvalue, TR_PRI_UNSET); gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, FILESCOL_PRIORITY, &gvalue); iter_to_row_reference(GTK_TREE_MODEL(model), iter, &parentRowRef); -- cgit v1.2.3