|  | @@ -21,9 +21,18 @@ type Buffer struct {
 | 
	
		
			
				|  |  |  	offset int
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +func CreateBuffer(container []byte, parent *BufferPool) *Buffer {
 | 
	
		
			
				|  |  | +	b := new(Buffer)
 | 
	
		
			
				|  |  | +	b.head = container
 | 
	
		
			
				|  |  | +	b.pool = parent
 | 
	
		
			
				|  |  | +	b.Value = b.head[defaultOffset:]
 | 
	
		
			
				|  |  | +	b.offset = defaultOffset
 | 
	
		
			
				|  |  | +	return b
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // Release recycles the buffer into an internal buffer pool.
 | 
	
		
			
				|  |  |  func (b *Buffer) Release() {
 | 
	
		
			
				|  |  | -	if b == nil {
 | 
	
		
			
				|  |  | +	if b == nil || b.head == nil {
 | 
	
		
			
				|  |  |  		return
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	b.pool.Free(b)
 | 
	
	
		
			
				|  | @@ -122,7 +131,7 @@ func (b *Buffer) SliceFrom(from int) *Buffer {
 | 
	
		
			
				|  |  |  func (b *Buffer) SliceBack(offset int) *Buffer {
 | 
	
		
			
				|  |  |  	newoffset := b.offset - offset
 | 
	
		
			
				|  |  |  	if newoffset < 0 {
 | 
	
		
			
				|  |  | -		newoffset = 0
 | 
	
		
			
				|  |  | +		panic("Negative buffer offset.")
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	b.Value = b.head[newoffset : b.offset+len(b.Value)]
 | 
	
		
			
				|  |  |  	b.offset = newoffset
 |