Skip to content

Commit c189d6a

Browse files
committed
1 parent 37fd831 commit c189d6a

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

buffer.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ type buffer struct {
3131

3232
func newBuffer(nc net.Conn) buffer {
3333
return buffer{
34-
buf: make([]byte, defaultBufSize, defaultBufSize),
34+
buf: make([]byte, defaultBufSize),
3535
nc: nc,
3636
}
3737
}
@@ -50,8 +50,7 @@ func (b *buffer) fill(need int) error {
5050
// Maybe keep the org buf slice and swap back?
5151
if need > len(b.buf) {
5252
// Round up to the next multiple of the default size
53-
newSize := ((need / defaultBufSize) + 1) * defaultBufSize
54-
newBuf := make([]byte, newSize, newSize)
53+
newBuf := make([]byte, ((need/defaultBufSize)+1)*defaultBufSize)
5554
copy(newBuf, b.buf)
5655
b.buf = newBuf
5756
}
@@ -119,7 +118,7 @@ func (b *buffer) takeBuffer(length int) []byte {
119118
}
120119

121120
if length < maxPacketSize {
122-
b.buf = make([]byte, length, length)
121+
b.buf = make([]byte, length)
123122
return b.buf
124123
}
125124
return make([]byte, length)
@@ -149,7 +148,9 @@ func (b *buffer) takeCompleteBuffer() []byte {
149148
// than len(b.buf). It can be used when you took buffer by
150149
// takeCompleteBuffer and append some data to it.
151150
func (b *buffer) setGrownBuffer(buf []byte) {
152-
if cap(buf) >= len(b.buf) {
153-
b.buf = buf[:cap(buf)]
151+
// buf may be grown by `buf = append(buf, ...)`. So set len=cap explicitly.
152+
buf = buf[:cap(buf)]
153+
if len(buf) > len(b.buf) {
154+
b.buf = buf
154155
}
155156
}

0 commit comments

Comments
 (0)