diff --git a/parser.go b/parser.go index 1781cc9..a53c2b7 100644 --- a/parser.go +++ b/parser.go @@ -397,6 +397,7 @@ func (p *parser) parseValArray(b []byte) (ast.Reference, []byte, error) { // array-values =/ ws-comment-newline val ws-comment-newline [ array-sep ] // array-sep = %x2C ; , Comma // ws-comment-newline = *( wschar / [ comment ] newline ) + arrayStart := b b = b[1:] parent := p.builder.Push(ast.Node{ @@ -415,7 +416,7 @@ func (p *parser) parseValArray(b []byte) (ast.Reference, []byte, error) { } if len(b) == 0 { - return parent, nil, newDecodeError(b, "array is incomplete") + return parent, nil, newDecodeError(arrayStart[:1], "array is incomplete") } if b[0] == ']' { diff --git a/unmarshaler_test.go b/unmarshaler_test.go index 008dfda..25484c2 100644 --- a/unmarshaler_test.go +++ b/unmarshaler_test.go @@ -1728,6 +1728,12 @@ func TestIssue579(t *testing.T) { require.Error(t, err) } +func TestIssue581(t *testing.T) { + var v interface{} + err := toml.Unmarshal([]byte(`P=[#`), &v) + require.Error(t, err) +} + //nolint:funlen func TestUnmarshalDecodeErrors(t *testing.T) { examples := []struct {