From 375ce9124837565fcb6900efbb6f06abb53f2d77 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Fri, 1 Nov 2013 09:13:14 +0000 Subject: [PATCH] fix integer overflow issue in timers --- include/libtorrent/time.hpp | 14 +++++++------- src/time.cpp | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/include/libtorrent/time.hpp b/include/libtorrent/time.hpp index 64785abfa..6566b4094 100644 --- a/include/libtorrent/time.hpp +++ b/include/libtorrent/time.hpp @@ -81,16 +81,16 @@ namespace libtorrent // returns a time_duration representing the specified number of seconds, milliseconds // microseconds, minutes and hours. - TORRENT_EXPORT time_duration seconds(int s); - TORRENT_EXPORT time_duration milliseconds(int s); - TORRENT_EXPORT time_duration microsec(int s); - TORRENT_EXPORT time_duration minutes(int s); - TORRENT_EXPORT time_duration hours(int s); + TORRENT_EXPORT time_duration seconds(boost::int64_t s); + TORRENT_EXPORT time_duration milliseconds(boost::int64_t s); + TORRENT_EXPORT time_duration microsec(boost::int64_t s); + TORRENT_EXPORT time_duration minutes(boost::int64_t s); + TORRENT_EXPORT time_duration hours(boost::int64_t s); // returns the number of seconds, milliseconds and microseconds // a time_duration represents. - TORRENT_EXPORT int total_seconds(time_duration td); - TORRENT_EXPORT int total_milliseconds(time_duration td); + TORRENT_EXPORT boost::int64_t total_seconds(time_duration td); + TORRENT_EXPORT boost::int64_t total_milliseconds(time_duration td); TORRENT_EXPORT boost::int64_t total_microseconds(time_duration td); #elif TORRENT_USE_CLOCK_GETTIME || TORRENT_USE_SYSTEM_TIME || TORRENT_USE_ABSOLUTE_TIME diff --git a/src/time.cpp b/src/time.cpp index 32f0ad563..6b134a185 100644 --- a/src/time.cpp +++ b/src/time.cpp @@ -99,15 +99,15 @@ namespace libtorrent { return boost::posix_time::ptime(boost::posix_time::min_date_time); } ptime max_time() { return boost::posix_time::ptime(boost::posix_time::max_date_time); } - time_duration seconds(int s) { return boost::posix_time::seconds(s); } - time_duration milliseconds(int s) { return boost::posix_time::milliseconds(s); } - time_duration microsec(int s) { return boost::posix_time::microsec(s); } - time_duration minutes(int s) { return boost::posix_time::minutes(s); } - time_duration hours(int s) { return boost::posix_time::hours(s); } + time_duration seconds(boost::int64_t s) { return boost::posix_time::seconds(s); } + time_duration milliseconds(boost::int64_t s) { return boost::posix_time::milliseconds(s); } + time_duration microsec(boost::int64_t s) { return boost::posix_time::microsec(s); } + time_duration minutes(boost::int64_t s) { return boost::posix_time::minutes(s); } + time_duration hours(boost::int64_t s) { return boost::posix_time::hours(s); } - int total_seconds(time_duration td) + boost::int64_t total_seconds(time_duration td) { return td.total_seconds(); } - int total_milliseconds(time_duration td) + boost::int64_t total_milliseconds(time_duration td) { return td.total_milliseconds(); } boost::int64_t total_microseconds(time_duration td) { return td.total_microseconds(); } @@ -188,12 +188,12 @@ namespace libtorrent return ptime(now.QuadPart); } - int total_seconds(time_duration td) + boost::int64_t total_seconds(time_duration td) { return boost::int64_t(performance_counter_to_microseconds(td.diff) / 1000000); } - int total_milliseconds(time_duration td) + boost::int64_t total_milliseconds(time_duration td) { return boost::uint64_t(performance_counter_to_microseconds(td.diff) / 1000); @@ -203,26 +203,26 @@ namespace libtorrent return performance_counter_to_microseconds(td.diff); } - time_duration microsec(int s) + time_duration microsec(boost::int64_t s) { return time_duration(microseconds_to_performance_counter(s)); } - time_duration milliseconds(int s) + time_duration milliseconds(boost::int64_t s) { return time_duration(microseconds_to_performance_counter( s * 1000)); } - time_duration seconds(int s) + time_duration seconds(boost::int64_t s) { return time_duration(microseconds_to_performance_counter( s * 1000000)); } - time_duration minutes(int s) + time_duration minutes(boost::int64_t s) { return time_duration(microseconds_to_performance_counter( s * 1000000 * 60)); } - time_duration hours(int s) + time_duration hours(boost::int64_t s) { return time_duration(microseconds_to_performance_counter( s * 1000000 * 60 * 60));