BUG: mktime() May Cause R6003 "integer divide by 0" ErrorLast reviewed: July 22, 1997Article ID: Q116210 |
1.00 1.50
WINDOWS
kbprg kbbuglist
The information in this article applies to:
SYMPTOMSWhen you call mktime() with any time between 00:00:00 and 01:00:00 on 1/1/1970, with the TZ environment variable set to LOC000000 (Greenwich Mean Time), the following error messages display: Under MS-DOS:
run-time error - integer divide by 0Under Windows:
Application Error - integer divide by 0 STATUSMicrosoft has confirmed this to be a bug in the products listed above. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available. This is not a problem in the Visual C++ 32-bit Edition.
MORE INFORMATIONThe following sample code demonstrates how to reproduce this problem:
Sample Code/* /* COMMAND LINE: /* DESCRIPTION: mktime() gives r6003 for time < 01:00:00 Jan. 1, 1970 /* Be sure that environment variable TZ=LOC000000 GMT /* #include <stdio.h> #include <time.h> #define START_TIME 3605L void main(void) { time_t reference; struct tm tblk; char buf[40]; /* get current TZ environment variable (TZ=LOC000000 on my system: GMT) */ _tzset(); /* init reference time to 01/01/1970 at 01:00:05 */ reference = START_TIME; /* assign daylight savings time value */ tblk.tm_isdst = _daylight; /* loop downwards from initial reference time */ for (reference = START_TIME;reference >= 0L; reference--) { tblk = *localtime(&reference); strftime(buf, 39, "%c", &tblk); printf("struct tm contents from localtime(): %s\n", buf); /* NOTE: mktime() generates divide by 0 error for reference seconds less than 3600 */ reference = mktime(&tblk); printf("seconds from struct tm using mktime(): %ld\n", reference); } } |
Additional reference words: 1.00 1.50
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |