On Jan 25, 2014, at 5:49 AM, Gary Bilkus <m...@gary.bilkus.com> wrote:

> On 24/01/2014 17:08, Derek Atkins wrote:
>> John Ralls <jra...@ceridwen.us> writes:
>> 
>>> if (sizeof(time_t) == 8)
>>>   return (double)((int64)time1 - (int64)time2);
>>> else
>>>   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.
>>> 
>>> Regards,
>>> John Ralls
>> -derek
>> 
> 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. 

Regards,
John Ralls


_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to