Преглед на файлове

prevent double release in buffer

v2ray преди 9 години
родител
ревизия
be90c04deb
променени са 1 файла, в които са добавени 6 реда и са изтрити 2 реда
  1. 6 2
      common/alloc/buffer.go

+ 6 - 2
common/alloc/buffer.go

@@ -166,10 +166,14 @@ func (p *bufferPool) allocate() *Buffer {
 }
 
 func (p *bufferPool) free(buffer *Buffer) {
+	rawBuffer := buffer.head
+	if rawBuffer == nil {
+		return
+	}
 	select {
-	case p.chain <- buffer.head:
+	case p.chain <- rawBuffer:
 	default:
-		p.allocator.Put(buffer.head)
+		p.allocator.Put(rawBuffer)
 	}
 }