浏览代码

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)
 	}
 }