[PATCH] msvcp120: Fix _Xtime_diff_to_millis2 overflow behavior.

Stefan Dösinger stefan at codeweavers.com
Thu Oct 12 13:07:07 CDT 2017


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).aspx
or
https://msdn.microsoft.com/en-us/library/windows/desktop/82cxdw50(v=vs.85).aspx
. Unfortunately neither function is currently implemented in Wine. The
MS headers suggest that they are msvc compiler intrinsics.



More information about the wine-devel mailing list