20 Aug
2008
20 Aug
'08
3:37 a.m.
There is an integer arithmetic bug in get_due_time() used by conditional variables in the boost 1.35/1.36 threading library. On line 343 in thread/src/win32/thread.cpp, integer division is performed before multiplication leaving the possibility of an erroneous 0 result in the case where ticks_per_second is larger than hundred_nanoseconds_in_one_second. Moving the brackets around the multiply or removing them altogether will fix this problem. I think this may only show itself if boost::date_time is setup so that BOOST_DATE_TIME_HAS_NANOSECONDS is true (the way I need it).