From da068500c618e4b1988fa3e2590e833bec8d64a4 Mon Sep 17 00:00:00 2001 From: Fabian Reinartz Date: Tue, 25 Apr 2017 10:25:08 +0200 Subject: [PATCH] Swap len and encoding fields in chunk entry --- chunks.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/chunks.go b/chunks.go index 5063a20e7..d828c1c13 100644 --- a/chunks.go +++ b/chunks.go @@ -194,14 +194,14 @@ func (w *chunkWriter) WriteChunks(chks ...*ChunkMeta) error { for _, chk := range chks { chk.Ref = seq | uint64(w.n) + if err := w.write([]byte{byte(chk.Chunk.Encoding())}); err != nil { + return err + } n = binary.PutUvarint(b, uint64(len(chk.Chunk.Bytes()))) if err := w.write(b[:n]); err != nil { return err } - if err := w.write([]byte{byte(chk.Chunk.Encoding())}); err != nil { - return err - } if err := w.write(chk.Chunk.Bytes()); err != nil { return err } @@ -283,16 +283,17 @@ func (s *chunkReader) Chunk(ref uint64) (chunks.Chunk, error) { if int(off) >= len(b) { return nil, errors.Errorf("offset %d beyond data size %d", off, len(b)) } - b = b[off:] + + enc := chunks.Encoding(b[off]) + b = b[off+1:] l, n := binary.Uvarint(b) if n < 0 { return nil, fmt.Errorf("reading chunk length failed") } b = b[n:] - enc := chunks.Encoding(b[0]) - c, err := chunks.FromData(enc, b[1:1+l]) + c, err := chunks.FromData(enc, b[0:l]) if err != nil { return nil, err }