[Mono-dev] [PATCH] eglib patch to avoid double overflow in win32 gtimers

Jeffrey Stedfast fejj at novell.com
Wed May 6 12:19:11 EDT 2009

The calculation:
    *microseconds = (gulong)(1000000.0 * (stop - timer->start) / freq);

isn't ideal ordering for long-running timers and may overflow after
multiplying by 1000000.0 but before having a chance to divide by freq. A
simple reordering of operations makes this less likely.

Also, I made it so that it only needs to query the performance counter
frequency once rather than each time. The patch also handles errors
getting the performance counter frequency (currently falls back to freq
= 1, but perhaps it should use freq = 1000000? Does anyone have hardware
where this actually fails?). This prevents possible divide-by-zero


-------------- next part --------------
A non-text attachment was scrubbed...
Name: gtimer.patch
Type: text/x-patch
Size: 1509 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20090506/c7e973b7/attachment.bin 

More information about the Mono-devel-list mailing list