From 0ab618c2dccee7397dd5e800d6c1333d2c06da2a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 13 Dec 2022 10:20:02 +0530 Subject: [PATCH] Fix #5767 --- tools/cmd/at/main.go | 7 +++---- tools/cmd/at/main_test.go | 1 + tools/cmd/clipboard/read.go | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/cmd/at/main.go b/tools/cmd/at/main.go index 5ab7cf08d..82e37639d 100644 --- a/tools/cmd/at/main.go +++ b/tools/cmd/at/main.go @@ -108,6 +108,9 @@ func (s escaped_string) MarshalJSON() ([]byte, error) { a('"') for _, r := range src { if ' ' <= r && r <= 126 { + if r == '\\' || r == '"' { + buf = append(buf, '\\') + } buf = append(buf, byte(r)) continue } @@ -122,10 +125,6 @@ func (s escaped_string) MarshalJSON() ([]byte, error) { a('\\', 'f') case '\b': a('\\', 'b') - case '\\': - a('\\', '\\') - case '"': - a('\\', '"') default: a('\\', 'u') for s := 12; s >= 0; s -= 4 { diff --git a/tools/cmd/at/main_test.go b/tools/cmd/at/main_test.go index daa5b9884..612604e4c 100644 --- a/tools/cmd/at/main_test.go +++ b/tools/cmd/at/main_test.go @@ -14,6 +14,7 @@ func TestEncodeJSON(t *testing.T) { tests := map[string]string{ "a b\nc\td\a": `a b\nc\td\u0007`, "•": `\u2022`, + `a"b`: `a\"b`, "\U0001f123": `\ud83c\udd23`, } var s escaped_string diff --git a/tools/cmd/clipboard/read.go b/tools/cmd/clipboard/read.go index 3c4ba5656..881f79ced 100644 --- a/tools/cmd/clipboard/read.go +++ b/tools/cmd/clipboard/read.go @@ -302,6 +302,7 @@ func run_get_loop(opts *Options, args []string) (err error) { return fmt.Errorf("Could not detect the MIME type for: %s use --mime to specify it manually", arg) } } + defer func() { for _, o := range outputs { if o.dest != nil {