From 4ff064043759c3b25cca2555cc50efa48c855f8a Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Thu, 30 Oct 2025 19:18:15 -0700 Subject: Small cleanup --- ccl.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ccl.go b/ccl.go index d0d06e9..2a80514 100644 --- a/ccl.go +++ b/ccl.go @@ -423,7 +423,7 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) { } 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+2], err) + return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+nBytes], err) } i += nBytes - 1 b = utf8.AppendRune(nil, rune(n)) @@ -433,7 +433,7 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) { } 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:i+3], err) + return nil, fmt.Errorf("invalid octal escape %q: %s", rawStr[i-1:i+3], err) } i += 2 b = []byte{byte(n)} @@ -488,6 +488,9 @@ func (p *parser) parsePossiblyRepeatedVal(fieldVal reflect.Value, parsedFields m fieldVal.Set(reflect.Append(fieldVal, reflect.Zero(fieldVal.Type().Elem()))) return p.parseVal(fieldVal.Index(fieldVal.Len()-1), tok, field) } + if parsedFields[string(field)] { + return p.error("duplicate field %q but type is not repeated", field) + } parsedFields[string(field)] = true return p.parseVal(fieldVal, tok, field) } @@ -541,7 +544,7 @@ func (p *parser) parseVal(fieldVal reflect.Value, tok, field []byte) error { fieldVal := setPtr(fieldVal) switch fieldVal.Kind() { case reflect.Float32, reflect.Float64: - fieldVal.SetFloat(float64(n)) + fieldVal.SetFloat(n) default: return p.error("field %q should have type float64 or float32", field) } @@ -601,9 +604,6 @@ func (p *parser) parseFieldVal(out reflect.Value, parsedFields map[string]bool, if b := field[0]; !(b == '_' || 'a' <= b && b <= 'z' || 'A' <= b && b <= 'Z') { return p.error("expecting field") } - if parsedFields[string(field)] { - return p.error("duplicate field %q but type is not repeated", field) - } fieldIdx, ok := p.fieldMap[structField{out.Type(), string(field)}] if !ok { return fmt.Errorf("no field named %q", field) -- cgit v1.3.1