(b []byte, r []byte, e escapes, expectMarker bool)
| 576 | } |
| 577 | |
| 578 | func decodeBytesInternal(b []byte, r []byte, e escapes, expectMarker bool) ([]byte, []byte, error) { |
| 579 | if expectMarker { |
| 580 | if len(b) == 0 || b[0] != e.marker { |
| 581 | return nil, nil, errors.Errorf("did not find marker %#x in buffer %#x", e.marker, b) |
| 582 | } |
| 583 | b = b[1:] |
| 584 | } |
| 585 | |
| 586 | for { |
| 587 | i := bytes.IndexByte(b, e.escape) |
| 588 | if i == -1 { |
| 589 | return nil, nil, errors.Errorf("did not find terminator %#x in buffer %#x", e.escape, b) |
| 590 | } |
| 591 | if i+1 >= len(b) { |
| 592 | return nil, nil, errors.Errorf("malformed escape in buffer %#x", b) |
| 593 | } |
| 594 | v := b[i+1] |
| 595 | if v == e.escapedTerm { |
| 596 | if r == nil { |
| 597 | r = b[:i] |
| 598 | } else { |
| 599 | r = append(r, b[:i]...) |
| 600 | } |
| 601 | return b[i+2:], r, nil |
| 602 | } |
| 603 | |
| 604 | if v != e.escaped00 { |
| 605 | return nil, nil, errors.Errorf("unknown escape sequence: %#x %#x", e.escape, v) |
| 606 | } |
| 607 | |
| 608 | r = append(r, b[:i]...) |
| 609 | r = append(r, e.escapedFF) |
| 610 | b = b[i+2:] |
| 611 | } |
| 612 | } |
| 613 | |
| 614 | // getBytesLength finds the length of a bytes encoding. |
| 615 | func getBytesLength(b []byte, e escapes) (int, error) { |
no outgoing calls
no test coverage detected
searching dependent graphs…