563. stringbuf seeking from end

Section: 30.8.2.4 [stringbuf.virtuals] Status: CD1 Submitter: Martin Sebor Opened: 2006-02-23 Last modified: 2016-02-10

Priority: Not Prioritized

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 end high mark pointer minus the beginning pointer (xend high_mark - xbeg).

[ Kona (2007) Moved to Ready. ]