parser: don't crash on unterminated table key (#580)
* parser: don't crash on unterminated table key Fixes #579 * parser: fix format of error returned by expect EOF was missing the format string and %U is not very human friendly.
This commit is contained in:
@@ -1030,8 +1030,12 @@ func isValidBinaryRune(r byte) bool {
|
||||
}
|
||||
|
||||
func expect(x byte, b []byte) ([]byte, error) {
|
||||
if len(b) == 0 {
|
||||
return nil, newDecodeError(b, "expected character %c but the document ended here", x)
|
||||
}
|
||||
|
||||
if b[0] != x {
|
||||
return nil, newDecodeError(b[0:1], "expected character %U", x)
|
||||
return nil, newDecodeError(b[0:1], "expected character %c", x)
|
||||
}
|
||||
|
||||
return b[1:], nil
|
||||
|
||||
@@ -1722,6 +1722,12 @@ func TestIssue507(t *testing.T) {
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestIssue579(t *testing.T) {
|
||||
var v interface{}
|
||||
err := toml.Unmarshal([]byte(`[foo`), &v)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
//nolint:funlen
|
||||
func TestUnmarshalDecodeErrors(t *testing.T) {
|
||||
examples := []struct {
|
||||
|
||||
Reference in New Issue
Block a user