From bbf40bb0e4f47860677c7115b2eaa5b3413ce23e Mon Sep 17 00:00:00 2001 From: tidwall Date: Wed, 14 Feb 2024 20:51:40 -0700 Subject: [PATCH] Fix backspace and form-feed for Go 1.22 --- gjson_test.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/gjson_test.go b/gjson_test.go index 5fdaf66..61c21f9 100644 --- a/gjson_test.go +++ b/gjson_test.go @@ -2578,15 +2578,19 @@ func TestJSONString(t *testing.T) { testJSONString(t, s) testJSONString(t, "R\xfd\xfc\a!\x82eO\x16?_\x0f\x9ab\x1dr") testJSONString(t, "_\xb9\v\xad\xb3|X!\xb6\xd9U&\xa4\x1a\x95\x04") - testJSONString(t, "\b\f") - rng := rand.New(rand.NewSource(time.Now().UnixNano())) - start := time.Now() - var buf [16]byte - for time.Since(start) < time.Second*2 { - if _, err := rng.Read(buf[:]); err != nil { - t.Fatal(err) + data, _ := json.Marshal("\b\f") + if (string(data) == "\"\\b\\f\"") { + // Go version 1.22+ encodes "\b" and "\f" correctly. + testJSONString(t, "\b\f") + rng := rand.New(rand.NewSource(time.Now().UnixNano())) + start := time.Now() + var buf [16]byte + for time.Since(start) < time.Second*2 { + if _, err := rng.Read(buf[:]); err != nil { + t.Fatal(err) + } + testJSONString(t, string(buf[:])) } - testJSONString(t, string(buf[:])) } }