diff --git a/TODO b/TODO index 12be21f51..a48670ca2 100644 --- a/TODO +++ b/TODO @@ -61,5 +61,5 @@ rc8->final? changelog: - BUGFIX: Do not save fastresume data for checking torrents anymore - BUGFIX: Saving trackers file only when necessary - BUGFIX: Fixed possible segfault when unfiltering files in torrent addition dialog - +- BUGFIX: Fixed possible overflow in ETA calculation diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp index ae3b5083a..b0e0402aa 100644 --- a/src/bittorrent.cpp +++ b/src/bittorrent.cpp @@ -166,8 +166,16 @@ void bittorrent::updateETAs() { foreach(val, listEtas) { moy += (qlonglong)((double)val/(double)nbETAs); } - Q_ASSERT(moy >= 0); - ETAs[hash] = moy; + if(moy < 0) { + if(ETAstats.contains(hash)) { + ETAstats.remove(hash); + } + if(ETAs.contains(hash)) { + ETAs.remove(hash); + } + } else { + ETAs[hash] = moy; + } } else { // Speed is too low, we don't want an overflow. if(ETAstats.contains(hash)) {