| 
					
				 | 
			
			
				@@ -4,6 +4,7 @@ import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"fmt" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/v2ray/v2ray-core/common" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"github.com/v2ray/v2ray-core/common/alloc" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/v2ray/v2ray-core/common/serial" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,22 +34,26 @@ func (this *errorLog) Release() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (this *errorLog) String() string { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	data := "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	b := alloc.NewSmallBuffer().Clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer b.Release() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	b.AppendString(this.prefix) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	for _, value := range this.values { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		switch typedVal := value.(type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case string: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			data += typedVal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			b.AppendString(typedVal) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case *string: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			data += *typedVal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			b.AppendString(*typedVal) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case serial.String: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			data += typedVal.String() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			b.AppendString(typedVal.String()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case error: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			data += typedVal.Error() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			b.AppendString(typedVal.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			data += fmt.Sprintf("%v", value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			b.AppendString(fmt.Sprint(value)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return this.prefix + data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return b.String() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var ( 
			 |