From 351de5ee6a60d24a60539317697aa2eefa98bbba Mon Sep 17 00:00:00 2001 From: john Date: Sun, 17 May 2020 12:46:28 +0800 Subject: [PATCH] fix concurrent issue in buffer handling of package grand --- .example/other/test2.go | 44 ++++---------------------------------- util/grand/grand_buffer.go | 4 +++- 2 files changed, 7 insertions(+), 41 deletions(-) diff --git a/.example/other/test2.go b/.example/other/test2.go index 616e55134..ff431bbfa 100644 --- a/.example/other/test2.go +++ b/.example/other/test2.go @@ -2,47 +2,11 @@ package main import ( "fmt" - "net" ) -func getMacAddrs() (macAddrs []string) { - netInterfaces, err := net.Interfaces() - if err != nil { - fmt.Printf("fail to get net interfaces: %v", err) - return macAddrs - } - - for _, netInterface := range netInterfaces { - macAddr := netInterface.HardwareAddr.String() - if len(macAddr) == 0 { - continue - } - - macAddrs = append(macAddrs, macAddr) - } - return macAddrs -} - -func getIPs() (ips []string) { - - interfaceAddr, err := net.InterfaceAddrs() - if err != nil { - fmt.Printf("fail to get net interface addrs: %v", err) - return ips - } - - for _, address := range interfaceAddr { - ipNet, isValidIpNet := address.(*net.IPNet) - if isValidIpNet && !ipNet.IP.IsLoopback() { - if ipNet.IP.To4() != nil { - ips = append(ips, ipNet.IP.String()) - } - } - } - return ips -} - func main() { - fmt.Printf("mac addrs: %q\n", getMacAddrs()) - fmt.Printf("ips: %q\n", getIPs()) + b1 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} + b2 := b1[:2] + b1[0] = 9 + fmt.Println(b2) } diff --git a/util/grand/grand_buffer.go b/util/grand/grand_buffer.go index ab6bd391c..95c658444 100644 --- a/util/grand/grand_buffer.go +++ b/util/grand/grand_buffer.go @@ -35,7 +35,9 @@ func asyncProducingRandomBufferBytesLoop() { panic(err) } else { for i := 0; i < n-4; i += 4 { - bufferChan <- buffer[i : i+4] + b := make([]byte, 4) + copy(b, buffer[i:i+4]) + bufferChan <- b } } }