Section: 31.7.5.4 [istream.unformatted] Status: CD1 Submitter: Martin Sebor Opened: 2006-02-23 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [istream.unformatted].
View all issues with CD1 status.
Discussion:
The array forms of unformatted input functions don't have well-defined
semantics for zero-element arrays in a couple of cases. The affected
ones (istream::get()
and getline()
) are supposed to
terminate when (n - 1)
characters are stored, which obviously
can never be true when (n == 0)
to start with.
Proposed resolution:
I propose the following changes (references are relative to the Working Draft (document N1804).
Change 27.6.1.3, p8 (istream::get()
), bullet 1 as follows:
if
(n < 1)
is true or(n - 1)
characters are stored;
Similarly, change 27.6.1.3, p18 (istream::getline()
), bullet
3 as follows:
(n < 1)
is true or(n - 1)
characters are stored (in which case the function callssetstate(failbit)
).
Finally, change p21 as follows:
In any case, provided
(n > 0)
is true, it then stores a null character (using charT()) into the next successive location of the array.