diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-04-16 21:46:15 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-04-16 21:46:15 +0000 |
commit | 2515c70aec58814f32fc7e22ab9dfa90fcd934e6 (patch) | |
tree | 45874fb488b7d996fb2323d355172d18cd204a0c /src/trg-files-model.c | |
parent | 5cda9c1baa93b0e0157431b1483d0734ba4afe80 (diff) |
oops.. json_array_get_elements() returns a newly allocated list, not the one owned by the array. fix a few memory leaks.
Diffstat (limited to 'src/trg-files-model.c')
-rw-r--r-- | src/trg-files-model.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/trg-files-model.c b/src/trg-files-model.c index 66feec6..0327962 100644 --- a/src/trg-files-model.c +++ b/src/trg-files-model.c @@ -35,7 +35,6 @@ typedef struct _TrgFilesModelPrivate TrgFilesModelPrivate; struct _TrgFilesModelPrivate { gint64 torrentId; - JsonArray *files; JsonArray *wanted; JsonArray *priorities; gboolean accept; @@ -113,7 +112,7 @@ gboolean trg_files_model_update_foreach(GtkListStore * model, GtkTreePath * path G_GNUC_UNUSED, GtkTreeIter * iter, - gpointer data G_GNUC_UNUSED) + GList *files) { TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model); JsonObject *file; @@ -121,7 +120,7 @@ trg_files_model_update_foreach(GtkListStore * model, gtk_tree_model_get(GTK_TREE_MODEL(model), iter, FILESCOL_ID, &id, -1); - file = json_node_get_object(json_array_get_element(priv->files, id)); + file = json_node_get_object(g_list_nth_data(files, id)); trg_files_model_iter_update(TRG_FILES_MODEL(model), iter, file, priv->wanted, priv->priorities, id); @@ -133,19 +132,19 @@ trg_files_model_update(TrgFilesModel * model, gint64 updateSerial, JsonObject * t, gint mode) { TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model); - GList *li; + GList *filesList, *li; gint j = 0; priv->torrentId = torrent_get_id(t); priv->priorities = torrent_get_priorities(t); priv->wanted = torrent_get_wanted(t); - priv->files = torrent_get_files(t); + + filesList = json_array_get_elements(torrent_get_files(t)); if (mode == TORRENT_GET_MODE_FIRST) { gtk_list_store_clear(GTK_LIST_STORE(model)); priv->accept = TRUE; - for (li = json_array_get_elements(priv->files); li; - li = g_list_next(li)) { + for (li = filesList; li; li = g_list_next(li)) { JsonObject *file = json_node_get_object((JsonNode *) li->data); GtkTreeIter filesIter; trg_files_model_iter_new(model, &filesIter, file, j); @@ -157,8 +156,10 @@ trg_files_model_update(TrgFilesModel * model, gint64 updateSerial, } else { gtk_tree_model_foreach(GTK_TREE_MODEL(model), (GtkTreeModelForeachFunc) - trg_files_model_update_foreach, NULL); + trg_files_model_update_foreach, filesList); } + + g_list_free(filesList); } gint64 trg_files_model_get_torrent_id(TrgFilesModel * model) |