Am 2017-10-12 um 11:32 schrieb Piotr Caban:
On 10/11/17 17:07, Stefan Dösinger wrote:
+ {0x7FFFFFFFFFFFFFFF, 0, 0x7FFFFFFFFFFFFFFD, 0, 0}, /* Not an overflow */
Defining LONGLONG constants this way is not portable.
Any better way? Does (LONGLONG)0x7FFFFFFFFFFFFFFF work, or do I need something more elaborate? The information I can find online points to C99 :-\ .
It looks like the function should be treating negative time differences in special way. Except of that it seems to be ignoring overflows. I think that following code is much easier to read. Is something like this working for you?
Your code looks more elegant than mine for sure, and I believe it should work. I'll double check it with WGC to be on the safe side.
As I've mentioned in the patch description I think native uses 128 bit integers, probably through https://msdn.microsoft.com/en-us/library/windows/desktop/hh802931(v=vs.85).a... or https://msdn.microsoft.com/en-us/library/windows/desktop/82cxdw50(v=vs.85).a... . Unfortunately neither function is currently implemented in Wine. The MS headers suggest that they are msvc compiler intrinsics.