Document: ISO/WG14 N705/J11-068
Title: Defect Reports since TC2 that promise some action for C9X.
Date: 23-May-97
Author: J. Benito (jb@peren.com)
This document attempts to identify all Defect Reports that have been logged since TC2 that have promised some action for C9X. All the Defect Preports since TC2 are listed, the ones identified as No Action Pending have been addressed by the committee, and do not effect C9X. The Defect Reports identified as Defect not Answered by Committee are defect reports where the Committee has not reached a final decision, these are still open. All other Defect Reports indicate some action to be taken for C9X. The headings for these are inconsistent as are the Defect Reports, I did not edit the text.
The HTML source for this document contains the necessary links to all the Defect Reports listed.
Defect Report 143
Suggested Future Change
The current C Standard has correct meaning, but the wording could
be clearer. We suggest the following change for the revised C Standard:
The argument mode points to a string. The mode
is determined by the string's longest initial match to the following
sequences; at least the initial character shall match:
Defect Report 144
Suggested Future Change
The current C Standard has correct meaning, but the wording could
be clearer. We suggest the following change for the revised C Standard:
A preprocessing directive consists of a directive consists of a
sequence of preprocessing tokens that begins with a #
preprocessing token that (at the start of translation phase 4) is
either ...
Defect Report 145
Future Change
In subclause 6.4 Sematics, change:
More latitude is permitted for constant expressions in
initializers. Such an expression shall evaluate to one of the following:
to:
More latitude is permitted for consant expressions in
initializers. Such an expression shall be, or evaluate to, one of the following
:
and change:
An address constant is a
pointer to an lvalue designating an object of static storage duration, or to a function
designator; it shall be created explicitly, using the unary & operator, or implicity, by the use of an expression of array or function type.
to:
An address constant is a null pointer, a pointer to an lvalue
designating an object of static storage
duration, or a pointer to a function desingator.
It shall be created explicitly using the unary &
operator or an integral constant expression cast to pointer type, or implicitly
by the use of an expression of array or function type.
Defect Report 146
Suggested Future Change:
Delete the constraint in subclause 6.1.2.
Defect Report 147
Response
We agree that the current wording does not make this clear. The
next revision of the C Standard will clarify that every function return
is a sequence point. The suggested changes will be used.
Suggested Changes:
Add to the end of subclause 7.1.7:
There is a sequence point immediately before a library function
returns.
Add to the end of annex C:
Immediately before a library function returns (7.1.7).
Add a reference to 7.1.7 in the Forward References of
5.1.2.3, and in the relevant Index entry.
Defect Report 148
No Action Pending
Defect Report 149
Response
The next revision of the C Standard will use the term "object"
instead of "variable" uniformly.
Defect Report 150
Suggested Future Change
In subclause 6.5.7, change:
All the expressions in an initializer for an object that has
static storage duration or in an initializer list for an object that
has aggregate or union type shall be constant expressions.
to:
All the expressions in an initializer for an object that has
static storage duration or in an initializer list for an object that
has aggregate or union type shall be constant expressions or string
literals.
Defect Report 151
No Action Pending
Defect Report 152
No Action Pending
Defect Report 153
No Action Pending
Defect Report 154
No Action Pending
Defect Report 155
Technical Corrigendum
In subclause 7.10.3, change the next to last sentence to read:
If the size of the space requested is zero, the behavior is
implementation defined: either a null pointer is returned, or the
behavior is as if the size were some unspecified nonzero value, except
that the returned pointer shall not be used to access an object.
Defect Report 156
Technical Corrigendum
In subclause 7.9.9.2, page 145, change:
... an earlier successful call to the ftell
function on the same stream ...
to:
... an earlier successful call to the ftell
function on a stream associated with the same file ...
In subclause 7.9.9.3, page 146, change:
... an earlier successful call to the fgetpos
function on the same stream.
to:
... an earlier successful call to the fgetpos
function on a stream associated with the same file.
Defect Report 157
No Action Pending
Defect Report 158
Future Change
In subclause 6.2.2.3, change:
Two null pointers, converted through possibly different sequences
of casts to pointer types, shall compare equal.
to:
Conversion of a null pointer to another pointer type yields a
null pointer of that type. Any two null pointers shall compare equal.
Defect Report 159
Suggested Technical Corrigendum:
In the Introduction, change:
The introduction, the examples, the footnotes, the references,
and the annexes are not part of this International Standard.
The language clause (clause 7) ...
The library clause (clause 8) ...
to:
As specified in the definitions and conventions clause (clause
3), this introduction, the examples, the footnotes, the references, and
the annexes are not part of this International Standard.
The language clause (clause 6) ...
The library clause (clause 7) ...
Insert at the start of clause 3:
The introduction, the examples, the footnotes, the references,
and the annexes are not part of this International Standard.
Defect Report 160
Suggested Future Change
In subclause 7.1.3, Reserved Identifiers, change bullet 2 to:
All identifiers that begin with an underscore are always reseved for use as macros and as identifiers with file scope in both the ordinary and tag name spaces.
Change bullet 5 to:
Each identifier with file scope listed in any of the following subclauses (including the Future library directions) is reserved for use as a macro and as an identifier with file scope in the same name space if any of its associated headers is included.
Defect Report 161
No Action Pending
Defect Report 162
Future Change
In subclause 7.12.3, change:
Except for the strtime 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 strtime 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 returned from any previous call to any of them.
Defect Report 163
Response
Identifiers that designate objects must be declared and be visible
before they can be primary expressions (subclause 6.1.2.1, An
identifier is visible (i.e., can be used) ...). A reasonable person
could interpret that if no declaration of some identifier is visible,
the identifier cannot be a primary expression. This affects undeclared
identifiers that are intended to be used as implicitly declared
functions. The Committee's intent is that the C Standard be read in the
following order:
1. 6.3.1 Primary expressions
Syntax
primary-expression:
identifier
2. 6.3.2.2 Function calls
Semantics
If the expression that precedes the parenthesized argument list
in a function call consists solely of an identifier, and if no
declaration is visible for this identifier, the identifier is
implicitly declared exactly as if, in the innermost block containing the
function call, the declaration
extern int identifier();
appeared.
3. 6.3.1 Primary expressions
Semantics
An identifier is a primary expression, provided it has been
declared as designating ... a function (...).
However, a reasonable person may not interpret the current wording
as having that meaning (i.e., it might not be read in that order).
This needs to be clarified in the next revision of the C Standard.
Defect Report 164
No Action Pending
Defect Report 165
Defect not Answered by Committee
Defect Report 166
Defect not Answered by Committee
Defect Report 167
Defect not Answered by Committee
Defect Report 168
Defect not Answered by Committee
Defect Report 169
No Action Pending
Defect Report 170
Response
This is a work in progress item.
General feeling is that this should be cleaned up for C9X along
the lines of C++ pp-punctuator grammar.
Suggested response is to add words to subclause 6.1.5 along the lines,
shall occur in pairs within expressions...
Defect Report 171
Defect not Answered by Committee
Defect Report 172
Response
This is a work in progress item.
Summary of Part 1:
The standard does not currently state what happens with relational
operators when you compare the address of an object with a null
pointer.
We know from the citation from subclause 6.2.2.3 that a null
pointer is guaranteed to yield false when compared with a pointer to an
object.
It is explicitly undefined behaviour to use relational operators
on two pointer that are not members of the same aggregate or union
object. However it is unstated whether a null pointer compares greater
or less than the address of an object and hence is implicitly undefined
behaviour.
Is this the desired behaviour?
Note: the current C++ clause has the following wording:
If two pointers of the same type point to different objects or
functions, or only one of them is null, they compare unequal.
This wording gives the possibility for C and C++ to give different
results.
Summary of Part 2:
Discussion from Nashua is as follows:
The intent is that pointers to distinct object will compare
unequal, The C Standard will be fixed in a future revision.
Defect Report 173
Defect not Answered by Committee
Defect Report 174
Defect not Answered by Committee
Defect Report 175
Defect not Answered by Committee
Defect Report 176
Defect not Answered by Committee
Defect Report 177
Defect not Answered by Committee
Defect Report 178
Defect not Answered by Committee