]> Cypherpunks.ru repositories - gostls13.git/commit
bufio: reject UnreadByte or UnreadRune after a Discard or WriteTo
authorBryan C. Mills <bcmills@google.com>
Thu, 23 Sep 2021 15:56:16 +0000 (11:56 -0400)
committerBryan C. Mills <bcmills@google.com>
Fri, 1 Oct 2021 17:40:49 +0000 (17:40 +0000)
commit243d65c8e551be424008a3dfcaf5c87dc1f35a77
tree1e4018c75253b2dc7f171f3f85d92db3e997cea4
parent33576247e295b19311484d943d85495006d2fb39
bufio: reject UnreadByte or UnreadRune after a Discard or WriteTo

Discard is not really a read operation, and in theory it could
Seek the underlying Reader without actually reading anything,
so an UnreadByte following a Discard is disallowed.

Similarly, although WriteTo usually does end up calling Read on the
underlying buffer, if the underlying Reader implements io.WriterTo it
may instead terminate in a call to WriteTo, without ever buffering or
even seeing the last byte written. (It is conceptually read-like, but
not strictly “a read operation”.)

Fixes #48446

Change-Id: Ide6f2b157332b423486810399f66140c914144e5
Reviewed-on: https://go-review.googlesource.com/c/go/+/351810
Trust: Bryan C. Mills <bcmills@google.com>
Trust: Joe Tsai <joetsai@digital-static.net>
Reviewed-by: Joe Tsai <joetsai@digital-static.net>
src/bufio/bufio.go
src/bufio/bufio_test.go