22 lines
		
	
	
		
			520 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			520 B
		
	
	
	
		
			Go
		
	
	
	
// Copyright 2015 Huan Du. All rights reserved.
 | 
						|
// Licensed under the MIT license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package xstrings
 | 
						|
 | 
						|
const bufferMaxInitGrowSize = 2048
 | 
						|
 | 
						|
// Lazy initialize a buffer.
 | 
						|
func allocBuffer(orig, cur string) *stringBuilder {
 | 
						|
	output := &stringBuilder{}
 | 
						|
	maxSize := len(orig) * 4
 | 
						|
 | 
						|
	// Avoid to reserve too much memory at once.
 | 
						|
	if maxSize > bufferMaxInitGrowSize {
 | 
						|
		maxSize = bufferMaxInitGrowSize
 | 
						|
	}
 | 
						|
 | 
						|
	output.Grow(maxSize)
 | 
						|
	output.WriteString(orig[:len(orig)-len(cur)])
 | 
						|
	return output
 | 
						|
}
 |