diff --git a/internal/serialize/keyvalues.go b/internal/serialize/keyvalues.go index 9c3858ec..f8096e59 100644 --- a/internal/serialize/keyvalues.go +++ b/internal/serialize/keyvalues.go @@ -262,7 +262,7 @@ func writeStringValue(b *bytes.Buffer, v string) { if index == -1 { b.WriteByte('=') // Simple string, quote quotation marks and non-printable characters. - b.WriteString(strconv.Quote(v)) + b.Write(strconv.AppendQuote(b.AvailableBuffer(), v)) return } diff --git a/internal/serialize/keyvalues_slog.go b/internal/serialize/keyvalues_slog.go index 8e008436..03e105ec 100644 --- a/internal/serialize/keyvalues_slog.go +++ b/internal/serialize/keyvalues_slog.go @@ -132,7 +132,10 @@ func generateJSON(b *bytes.Buffer, v interface{}) { if i > 0 { b.WriteByte(',') } - b.WriteString(strconv.Quote(attr.Key)) + b.Write( + strconv.AppendQuote( + b.AvailableBuffer(), + attr.Key)) b.WriteByte(':') generateJSON(b, attr.Value) } @@ -144,15 +147,24 @@ func generateJSON(b *bytes.Buffer, v interface{}) { generateJSON(b, v.Any()) } case fmt.Stringer: - b.WriteString(strconv.Quote(StringerToString(v))) + b.Write( + strconv.AppendQuote( + b.AvailableBuffer(), + StringerToString(v))) case logr.Marshaler: generateJSON(b, MarshalerToValue(v)) case slog.LogValuer: generateJSON(b, slog.AnyValue(v).Resolve().Any()) case string: - b.WriteString(strconv.Quote(v)) + b.Write( + strconv.AppendQuote( + b.AvailableBuffer(), + v)) case error: - b.WriteString(strconv.Quote(v.Error())) + b.Write( + strconv.AppendQuote( + b.AvailableBuffer(), + v.Error())) default: formatAsJSON(b, v) }