Quick note about the importance of the copy
This commit is contained in:
parent
b5536dfc77
commit
1591d86e23
|
@ -99,6 +99,8 @@ func ScanReader(r io.Reader, callback func(line []byte)) error {
|
||||||
// the websocket. The front-end can handle the linebreaks in the middle of
|
// the websocket. The front-end can handle the linebreaks in the middle of
|
||||||
// the output, it simply expects that the end of the event emit is a newline.
|
// the output, it simply expects that the end of the event emit is a newline.
|
||||||
if buf.Len() > 0 {
|
if buf.Len() > 0 {
|
||||||
|
// You need to make a copy of the buffer here because the callback will encounter
|
||||||
|
// a race condition since "buf.Bytes()" is going to be by-reference if passed directly.
|
||||||
c := make([]byte, buf.Len())
|
c := make([]byte, buf.Len())
|
||||||
copy(c, buf.Bytes())
|
copy(c, buf.Bytes())
|
||||||
callback(c)
|
callback(c)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user