File tree 2 files changed +19
-4
lines changed
2 files changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -37,10 +37,25 @@ func newBuffer(nc net.Conn) buffer {
37
37
}
38
38
}
39
39
40
- func (b * buffer ) reset () {
41
- b .buf = make ([]byte , defaultBufSize )
40
+ // discard trims b.buf[:b.idx] to prohibit it reused.
41
+ //
42
+ // This is required by Rows.Close().
43
+ // See https://github.com/golang/go/commit/651ddbdb5056ded455f47f9c494c67b389622a47
44
+ func (b * buffer ) discard () {
45
+ if len (b .buf )- b .idx >= defaultBufSize {
46
+ b .buf = b .buf [b .idx :]
47
+ b .idx = 0
48
+ return
49
+ }
50
+
51
+ bufSize := defaultBufSize
52
+ if bufSize < b .length {
53
+ bufSize = b .length
54
+ }
55
+ newBuf := make ([]byte , bufSize )
56
+ copy (newBuf , b .buf [b .idx :b .idx + b .length ])
57
+ b .buf = newBuf
42
58
b .idx = 0
43
- b .length = 0
44
59
}
45
60
46
61
// fill reads into the buffer until at least _need_ bytes are in it
Original file line number Diff line number Diff line change @@ -113,7 +113,7 @@ func (rows *mysqlRows) Close() (err error) {
113
113
114
114
// We can't reuse receive buffer when rows.Close() is called.
115
115
// See https://github.com/golang/go/commit/651ddbdb5056ded455f47f9c494c67b389622a47
116
- mc .buf .reset ()
116
+ mc .buf .discard ()
117
117
118
118
// Remove unread packets from stream
119
119
if ! rows .rs .done {
You can’t perform that action at this time.
0 commit comments