Re: [Boost-bugs] [Boost C++ Libraries] #3109: time_duration::total_seconds() - overflow

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #3109: time_duration::total_seconds() - overflow
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2010-01-19 20:38:15

#3109: time_duration::total_seconds() - overflow
 Reporter: ioni@… | Owner: az_sw_dude
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: date_time
  Version: Boost 1.41.0 | Severity: Problem
 Keywords: year 2038 problem |
Changes (by rehor@…):

  * version: Boost 1.39.0 => Boost 1.41.0


 platform: MSVC 8, Windows XP
 Boost 1.41

 time_duration::total_seconds should be returning 64bit int instead of
 32bit int. All underlying code is correct, only the return type of
 time_duration::total_seconds() is only a 32bit int, which is not wide
 enough for time durations lasting several decades or a century. When
 changed to 64bit int, total_seconds() works as expected. The problem
 possibly applies to other total_* methods as well.

 time_duration d =
   - ptime(boost::gregorian::date(1899,12,30));

 unsigned long long s = d.total_seconds(); // returns a negative int

 Proposed fix: time_duration.hpp
     //! Returns total number of seconds truncating any fractional seconds
     tick_type total_seconds() const //changed type from sec_type to
       return static_cast<tick_type>(ticks() / ticks_per_second());

Ticket URL: <>
Boost C++ Libraries <>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:02 UTC