Building on Windows from scratch - difftime problem found ( was datediff )
jralls at ceridwen.us
Sat Jan 25 10:37:41 EST 2014
On Jan 25, 2014, at 5:49 AM, Gary Bilkus <mail at gary.bilkus.com> wrote:
> On 24/01/2014 17:08, Derek Atkins wrote:
>> John Ralls <jralls at ceridwen.us> writes:
>>> if (sizeof(time_t) == 8)
>>> return (double)((int64)time1 - (int64)time2);
>>> return (double)((int32)time1 - (int32)time2);
>> This code probably wouldn't compile cleanly. It would complain about
>> casting to different sizes. Even though theoretically the compiler
>> should be able to optimize the branch by noticing that it is always true
>> or always false, it will still complain about the unused branch. (I
>> know this from personal experience).
>>> That could be done as a macro and inserted into one of the header
>>> files in each library.
>>> John Ralls
> Given that time_t is always a signed integer value, wouldn't
> return (double)(time1-time2)
> just work anyway, at least as far as a patch for mingw is concerned?
Only if the binary never leaves the machine on which it was compiled. The problem arises when the program compiled with one size of time_t is run with an msvcrt with the other size. Keith Mashall explains it pretty clearly in the second and third emails in that thread I cited a couple of days ago.
More information about the gnucash-devel