Defect Report #162

Submission Date: 16 Oct 95
Submittor: BSI
Source: Clive D.W. Feather
Question
Submitted to BSI by Clive D.W. Feather [email protected] .
In this Defect Report, identifiers lexically identical to those declared in standard headers refer to the identifiers declared in those standard headers, whether or not the header is explicitly mentioned.
This Defect Report has been prepared with considerable help from Mark Brader, Jutta Degener, Ronald Guilmette, and a person whose employment conditions require anonymity. However, except where stated, opinions expressed or implied should not be assumed to be those of any person other than myself.
Defect Report UK 010: gmtime and localtime
The C Standard's description of the static objects used by time.h functions is misleading.
Subclause 7.12.3 reads in part:
these functions return values in one of two static objects: a broken-down time structure and an array of char. Execution of any of the functions may overwrite the information returned in either of these objects by any of the other functions.
Does this mean that, for example, localtime and gmtime must share a single broken-down time structure, and so the value returned from gmtime, if not a null pointer, must equal the value returned from localtime (and this value cannot change during execution of the program)?
The wording the other functions also implies that a call to gmtime can overwrite a previous call to localtime, but not a previous call to gmtime. This is clearly ridiculous.
Suggested Technical Corrigendum
In subclause 7.12.3, change:
these functions return values in one of two static objects: a broken-down time structure and an array of char. Execution of any of the functions may overwrite the information returned in either of these objects by any of the other functions.
to:
these functions each return a pointer to an object of static storage duration after assigning a value to it. Execution of any of these functions may overwrite the information returned in any of these objects by a previous call to any of these functions.
Future Change
In subclause 7.12.3, change:
Except for the strftime function, these functions return values in one of two static objects: a broken-down time structure and an array of char. Execution of any of the functions may overwrite the information returned in either of these objects by any of the other functions.
to:
Except for the strftime function, these functions each return a pointer to one of two types of static objects: a broken-down time structure or an array of char. Execution of any of the functions that return a pointer to one of these object types may overwrite the information in any object of the same type pointed to by the value retruned from any previous call to any of them.
Previous Defect Report < - > Next Defect Report