From be90c04deb0bccb42a78eb112cbcf6463f8a7f46 Mon Sep 17 00:00:00 2001 From: v2ray Date: Wed, 9 Mar 2016 11:34:39 +0100 Subject: [PATCH] prevent double release in buffer --- common/alloc/buffer.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common/alloc/buffer.go b/common/alloc/buffer.go index 6e879db46..9ec8b28f9 100644 --- a/common/alloc/buffer.go +++ b/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) } }