diff options
-rw-r--r-- | src/bencode.c | 20 | ||||
-rw-r--r-- | src/torrent.c | 8 | ||||
-rw-r--r-- | src/trg-torrent-model.c | 9 |
3 files changed, 21 insertions, 16 deletions
diff --git a/src/bencode.c b/src/bencode.c index 3eacebb..c9c9b6a 100644 --- a/src/bencode.c +++ b/src/bencode.c @@ -180,12 +180,6 @@ be_node *be_decode(const char *data) return be_decoden(data, strlen(data)); } -static inline void _be_free_str(char *str) -{ - if (str) - g_free(str - sizeof(gint64)); -} - int be_validate_node(be_node * node, int type) { if (!node || node->type != type) @@ -194,6 +188,12 @@ int be_validate_node(be_node * node, int type) return 0; } +static inline void _be_free_str(char *str) +{ + if (str) + g_free(str - sizeof(gint64)); +} + void be_free(be_node * node) { switch (node->type) { @@ -206,9 +206,11 @@ void be_free(be_node * node) case BE_LIST:{ unsigned int i; - for (i = 0; node->val.l[i]; ++i) - be_free(node->val.l[i]); - g_free(node->val.l); + if (node->val.l) { + for (i = 0; node->val.l[i]; ++i) + be_free(node->val.l[i]); + g_free(node->val.l); + } break; } diff --git a/src/torrent.c b/src/torrent.c index 784668f..426a2ce 100644 --- a/src/torrent.c +++ b/src/torrent.c @@ -204,12 +204,15 @@ guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, gint64 dow break; case TR_STATUS_DOWNLOAD: flags |= TORRENT_FLAG_DOWNLOADING; + flags |= TORRENT_FLAG_ACTIVE; break; case TR_STATUS_SEED_WAIT: flags |= TORRENT_FLAG_SEEDING_WAIT; break; case TR_STATUS_SEED: flags |= TORRENT_FLAG_SEEDING; + if (torrent_get_peers_getting_from_us(t)) + flags |= TORRENT_FLAG_ACTIVE; break; } } else { @@ -231,6 +234,8 @@ guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, gint64 dow flags |= TORRENT_FLAG_CHECKING; break; } + if (downRate > 0 || upRate > 0) + flags |= TORRENT_FLAG_ACTIVE; } if (torrent_get_is_finished(t) == TRUE) @@ -238,9 +243,6 @@ guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, gint64 dow else flags |= TORRENT_FLAG_INCOMPLETE; - if (downRate > 0 || upRate > 0) - flags |= TORRENT_FLAG_ACTIVE; - if (strlen(torrent_get_errorstr(t)) > 0) flags |= TORRENT_FLAG_ERROR; diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c index 90d9d6f..8959027 100644 --- a/src/trg-torrent-model.c +++ b/src/trg-torrent-model.c @@ -264,10 +264,6 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial, statusIcon = torrent_get_status_icon(rpcv, newFlags); pf = torrent_get_peersfrom(t); trackerStats = torrent_get_tracker_stats(t); - if (json_array_get_length(trackerStats) > 0) { - JsonObject *firstTracker = json_array_get_object_element(trackerStats, 0); - firstTrackerHost = trg_gregex_get_first(priv->urlHostRegex, tracker_stats_get_host(firstTracker)); - } gtk_tree_model_get(GTK_TREE_MODEL(model), iter, TORRENT_COLUMN_FLAGS, &lastFlags, @@ -275,6 +271,11 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial, json_object_ref(t); + if (json_array_get_length(trackerStats) > 0) { + JsonObject *firstTracker = json_array_get_object_element(trackerStats, 0); + firstTrackerHost = trg_gregex_get_first(priv->urlHostRegex, tracker_stats_get_host(firstTracker)); + } + #ifdef DEBUG gtk_list_store_set(ls, iter, TORRENT_COLUMN_ICON, statusIcon, -1); gtk_list_store_set(ls, iter, |