aboutsummaryrefslogtreecommitdiffstats
path: root/ccl.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2025-11-22 08:26:09 -0800
committerRose Hogenson <rosehogenson@posteo.net>2025-11-22 08:26:09 -0800
commitda798b651e8efc766cf66a39ccef906681f0b17a (patch)
tree6adca8b604745ec729b88b8253840a4e82541d59 /ccl.go
parentHoly shit fuzzing is so cool (diff)
downloadccl-da798b651e8efc766cf66a39ccef906681f0b17a.tar.zst
Improve error handling
Diffstat (limited to 'ccl.go')
-rw-r--r--ccl.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/ccl.go b/ccl.go
index 360bde4..6753dbc 100644
--- a/ccl.go
+++ b/ccl.go
@@ -399,16 +399,16 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) {
if i < len(rawStr) && rawStr[i] == '\n' {
b = nil
} else {
- return nil, fmt.Errorf("invalid escape sequence %q", rawStr[i-2:min(i+1, len(rawStr))])
+ return nil, p.error("invalid escape sequence %q", rawStr[i-2:min(i+1, len(rawStr))])
}
case 'x':
i++
if i+2 > len(rawStr) {
- return nil, fmt.Errorf("invalid hex escape %q", rawStr[i-2:min(i+2, len(rawStr))])
+ return nil, p.error("invalid hex escape %q", rawStr[i-2:min(i+2, len(rawStr))])
}
n, err := strconv.ParseUint(string(rawStr[i:i+2]), 16, 8)
if err != nil {
- return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+2], err)
+ return nil, p.error("invalid hex escape %q: %s", rawStr[i-2:i+2], err)
}
i++
b = []byte{byte(n)}
@@ -419,21 +419,21 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) {
}
i++
if i+nBytes > len(rawStr) {
- return nil, fmt.Errorf("invalid unicode escape %q", rawStr[i-2:min(i+nBytes, len(rawStr))])
+ return nil, p.error("invalid unicode escape %q", rawStr[i-2:min(i+nBytes, len(rawStr))])
}
n, err := strconv.ParseUint(string(rawStr[i:i+nBytes]), 16, 31)
if err != nil {
- return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+nBytes], err)
+ return nil, p.error("invalid unicode escape %q: %s", rawStr[i-2:i+nBytes], err)
}
i += nBytes - 1
b = utf8.AppendRune(nil, rune(n))
default:
if i+3 > len(rawStr) {
- return nil, fmt.Errorf("invalid string escape %q", rawStr[i-1:i+1])
+ return nil, p.error("invalid string escape %q", rawStr[i-1:i+1])
}
n, err := strconv.ParseUint(string(rawStr[i:i+3]), 8, 8)
if err != nil {
- return nil, fmt.Errorf("invalid octal escape %q: %s", rawStr[i-1:i+3], err)
+ return nil, p.error("invalid octal escape %q: %s", rawStr[i-1:i+3], err)
}
i += 2
b = []byte{byte(n)}
@@ -522,7 +522,7 @@ func (p *parser) parseVal(fieldVal reflect.Value, tok, field []byte) error {
case fieldVal.Type() == reflect.TypeFor[[]byte]():
b, err := base64.StdEncoding.DecodeString(s)
if err != nil {
- return fmt.Errorf("field %q: bad base64", field)
+ return p.error("field %q: bad base64", field)
}
fieldVal.Set(reflect.ValueOf(b))
default:
@@ -606,7 +606,7 @@ func (p *parser) parseFieldVal(out reflect.Value, parsedFields map[string]bool,
}
fieldIdx, ok := p.fieldMap[structField{out.Type(), string(field)}]
if !ok {
- return fmt.Errorf("no field named %q", field)
+ return p.error("no field named %q", field)
}
fieldVal := out.Field(fieldIdx)
tok, err := p.next()