Ticket #9489: boost-posix-date-time-overflow.cpp

File boost-posix-date-time-overflow.cpp, 1.1 KB (added by mreissne@…, 9 years ago)

Test program to reproduce the error

Line 
1#include <boost/date_time/posix_time/posix_time.hpp>
2#include <boost/date_time/posix_time/posix_time_config.hpp>
3#include <iostream>
4
5// Demonstrates the conversion error in boost::date_time::time_resolution_traits
6// Since v_type is boost::int32_t, even for 64-bit systems like
7// time_resolution_traits_bi64_impl and time_resolution_traits_adapted64_impl,
8// date-times whose tick-counts exceed the int32_t limit will overflow.
9int main()
10{
11 typedef boost::posix_time::ptime system_time;
12 typedef system_time::date_type date_type;
13 typedef system_time::time_duration_type time_duration_type;
14
15 date_type d(2038,1,19);
16 time_duration_type td(3,14,8,0);
17 system_time st(system_time(d,td));
18 // snippet found in boost/thread/pthread/timespec.hpp
19 boost::posix_time::time_duration const time_since_epoch =
20 st - boost::posix_time::from_time_t(0);
21 // the typecast error will cause total_seconds to be negative.
22 std::cerr << st << std::endl;
23 std::cerr << time_since_epoch.total_seconds() << std::endl;
24}
25