Section: 31.8.2.5 [stringbuf.virtuals] Status: CD1 Submitter: Martin Sebor Opened: 2006-02-23 Last modified: 2016-01-28
Priority: Not Prioritized
View other active issues in [stringbuf.virtuals].
View all other issues in [stringbuf.virtuals].
View all issues with CD1 status.
Discussion:
According to Table 92 (unchanged by issue 432), when (way ==
end)
the newoff
value in out mode is computed as
the difference between epptr()
and pbase()
.
This value isn't meaningful unless the value of epptr()
can be precisely controlled by a program. That used to be possible
until we accepted the resolution of issue 432, but since then the
requirements on overflow()
have been relaxed to allow it
to make more than 1 write position available (i.e., by setting
epptr()
to some unspecified value past
pptr()
). So after the first call to
overflow()
positioning the output sequence relative to
end will have unspecified results.
In addition, in in|out
mode, since (egptr() ==
epptr())
need not hold, there are two different possible values
for newoff
: epptr() - pbase()
and
egptr() - eback()
.
Proposed resolution:
Change the newoff
column in the last row of Table 94 to
read:
the
endhigh mark pointer minus the beginning pointer ().
xendhigh_mark - xbeg
[ Kona (2007) Moved to Ready. ]