mirror of
https://github.com/golang/go
synced 2024-11-26 08:48:13 -07:00
parent
8cb350d69a
commit
a33fe7e206
@ -1168,7 +1168,8 @@ func (l *maxBytesReader) Read(p []byte) (n int, err error) {
|
|||||||
// If they asked for a 32KB byte read but only 5 bytes are
|
// If they asked for a 32KB byte read but only 5 bytes are
|
||||||
// remaining, no need to read 32KB. 6 bytes will answer the
|
// remaining, no need to read 32KB. 6 bytes will answer the
|
||||||
// question of the whether we hit the limit or go past it.
|
// question of the whether we hit the limit or go past it.
|
||||||
if int64(len(p)) > l.n+1 {
|
// 0 < len(p) < 2^63
|
||||||
|
if int64(len(p))-1 > l.n {
|
||||||
p = p[:l.n+1]
|
p = p[:l.n+1]
|
||||||
}
|
}
|
||||||
n, err = l.r.Read(p)
|
n, err = l.r.Read(p)
|
||||||
|
@ -982,6 +982,12 @@ func TestMaxBytesReaderDifferentLimits(t *testing.T) {
|
|||||||
wantN: len(testStr),
|
wantN: len(testStr),
|
||||||
wantErr: false,
|
wantErr: false,
|
||||||
},
|
},
|
||||||
|
10: { /* Issue 54408 */
|
||||||
|
limit: int64(1<<63-1),
|
||||||
|
lenP: len(testStr),
|
||||||
|
wantN: len(testStr),
|
||||||
|
wantErr: false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for i, tt := range tests {
|
for i, tt := range tests {
|
||||||
rc := MaxBytesReader(nil, io.NopCloser(strings.NewReader(testStr)), tt.limit)
|
rc := MaxBytesReader(nil, io.NopCloser(strings.NewReader(testStr)), tt.limit)
|
||||||
|
Loading…
Reference in New Issue
Block a user