From: Ethan M. <merritt@u.washington.edu> - 2009-06-04 20:52:03
|
A recent report on the newsgroup of gnuplot hanging turns out to be due to a comedy of coding errors that I won't go into here, but ultimately the hang is due to the routine ggmtime() in time.c ggmtime() stupidly calculates time by incremental subtraction from a target date given in seconds. If the target date is large, say 10^12, a single call can take a minute to return. If the target date is even larger, say 10^38, it would take approximately 10^22 years to return from a single date calculation. And guess what the default initial value is ;-\ ;-\ ;-\ The thing is, the routines in time.c are marked in the header as being protection against possible Y2K problems in the POSIX time routines provided by a system library. Their use is under the control of USE_SYSTEM_TIME, which currently defaults to being undefined. Now that Y2K is past and gone, can we define USE_SYSTEM_TIME by default and go back to using the standard POSIX routines? If not that, should we put a sanity check in the time routines limiting the accessible future to, say, the first 1.e10 seconds of the epoch? -- Ethan A Merritt |