Re: [Boost-bugs] [Boost C++ Libraries] #9880: boost::condition_variable.timed_wait() exception if system time < 1970

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #9880: boost::condition_variable.timed_wait() exception if system time < 1970
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-04-14 17:13:07


#9880: boost::condition_variable.timed_wait() exception if system time < 1970
-------------------------------+----------------------
  Reporter: anonymous | Owner: viboes
      Type: Bugs | Status: assigned
 Milestone: To Be Determined | Component: thread
   Version: Boost 1.55.0 | Severity: Problem
Resolution: | Keywords:
-------------------------------+----------------------
Description changed by viboes:

Old description:

> Os: any windows.
> Set system time < 01.01.1970, for example 01.01.1950.
>
> Any call to boost::condition_variable.timed_wait() with relative(!) time
> throw exception because boost try get system time in posix format.
>
> How to fix:
> boost\thread\win32\thread_data.hpp, line 179 (boost 1.55.0). In
> constructor
> timeout(uintmax_t milliseconds_):
> start(win32::GetTickCount64()),
> milliseconds(milliseconds_),
> relative(true),
> abs_time(boost::get_system_time())
> {}
> we set "relative(true)" and there for not need to set variable
> "abs_time". Must be:
> timeout(uintmax_t milliseconds_):
> start(win32::GetTickCount64()),
> milliseconds(milliseconds_),
> relative(true)
> {}

New description:

 Os: any windows.
 Set system time < 01.01.1970, for example 01.01.1950.

 Any call to boost::condition_variable.timed_wait() with relative(!) time
 throw exception because boost try get system time in posix format.

 How to fix:
 boost\thread\win32\thread_data.hpp, line 179 (boost 1.55.0). In
 constructor

 {{{
             timeout(uintmax_t milliseconds_):
                 start(win32::GetTickCount64()),
                 milliseconds(milliseconds_),
                 relative(true),
                 abs_time(boost::get_system_time())
             {}
 }}}

 we set "relative(true)" and there for not need to set variable "abs_time".
 Must be:

 {{{
             timeout(uintmax_t milliseconds_):
                 start(win32::GetTickCount64()),
                 milliseconds(milliseconds_),
                 relative(true)
             {}
 }}}

--
-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9880#comment:3>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

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