From 5bb358b012bb5054422cc1f8ed1302bcbc30c93c Mon Sep 17 00:00:00 2001 From: Scott Wegner Date: Thu, 19 Jun 2008 13:46:24 -0500 Subject: [svn-r15240] Purpose: Fix ohdr Windows timezone bug Description: On Windows, certain users were having trouble with the "ohdr" test, which does some processing on object header messages. The errors were hard to reproduce on our machines, and we eventually determined that the errors were timezone-specific. The bug is triggered on Windows when processing timestamps very near the "Epoch" (midnight on 1/1/1970)-- the mktime() function does some automatic adjustment on the time to correct for timezones. In the USA, the correction adds a few hours; in Europe, it subtracts, thus giving us times pre-Epoch. This only affects Windows because the Windows mktime() function cannot handle times before 1970-- other systems seemingly can. The fix is to simply create timestamps only as early as 01/02/1970. This way, any timezone adjustment will still be post-Epoch. This bug only affects the ohdr test, and shouldn't be a problem in the library. The earliest timestamps that will actually be read will be around the time HDF5 was created (~1996-7, per Quincey). Tested: VS2005 on WinXP h5committest (kagiso, linew, smirom) --- test/ohdr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ohdr.c b/test/ohdr.c index 08fd860..0a25993 100644 --- a/test/ohdr.c +++ b/test/ohdr.c @@ -153,7 +153,7 @@ main(void) */ TESTING("object header overflow in memory"); for(i = 0; i < 40; i++) { - time_new = (i + 1) * 1000 + 1; + time_new = (i + 1) * 1000 + 1000000; if(H5O_msg_create(&oh_loc, H5O_MTIME_ID, 0, 0, &time_new, H5P_DATASET_XFER_DEFAULT) < 0) FAIL_STACK_ERROR } /* end for */ -- cgit v0.12