From 177b4a5e538159e01f2d41ae566d4e4751ed4d04 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Sun, 26 Dec 2021 16:38:15 +0100 Subject: [PATCH] Decode: allow \r\n as line whitespace before \ (#709) Fixes #708 --- parser.go | 4 ++++ unmarshaler_test.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/parser.go b/parser.go index 7fee2de..ce493cb 100644 --- a/parser.go +++ b/parser.go @@ -578,6 +578,10 @@ func (p *parser) parseMultilineBasicString(b []byte) ([]byte, []byte, []byte, er switch token[i+j] { case ' ', '\t': continue + case '\r': + if token[i+j+1] == '\n' { + continue + } case '\n': isLastNonWhitespaceOnLine = true } diff --git a/unmarshaler_test.go b/unmarshaler_test.go index 81e3ef7..fd780d6 100644 --- a/unmarshaler_test.go +++ b/unmarshaler_test.go @@ -2304,6 +2304,13 @@ func TestIssue703(t *testing.T) { require.Error(t, err) } +func TestIssue708(t *testing.T) { + v := map[string]string{} + err := toml.Unmarshal([]byte("0=\"\"\"\\\r\n\"\"\""), &v) + require.NoError(t, err) + require.Equal(t, map[string]string{"0": ""}, v) +} + func TestUnmarshalDecodeErrors(t *testing.T) { examples := []struct { desc string