Skip to content

Commit 908e87a

Browse files
committed
chore: cleanup unnecessary code
1 parent 3a0bcb8 commit 908e87a

File tree

3 files changed

+16
-158
lines changed

3 files changed

+16
-158
lines changed

decode.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -189,23 +189,19 @@ func (d *Decoder) decodeMaster(val reflect.Value, current Element) error {
189189
}
190190

191191
occurrences := make(map[schema.ElementID]int)
192-
offsetStart := d.r.InputOffset()
193192
offset := int64(0)
194193
for {
195-
el, _, err := d.NextOf(current, d.r.InputOffset()-offsetStart)
196-
offset = d.r.InputOffset() - offsetStart
194+
el, n, err := d.NextOf(current, offset)
195+
offset += int64(n)
196+
if errors.Is(err, ebmltext.ErrInvalidVINTWidth) {
197+
d.r.Seek(1, io.SeekCurrent)
198+
offset += 1
199+
continue
200+
}
201+
if err == io.EOF {
202+
break
203+
}
197204
if err != nil {
198-
if err == ebmltext.ErrInvalidVINTWidth {
199-
d.r.Seek(1, io.SeekCurrent)
200-
continue
201-
}
202-
if err == io.EOF {
203-
break
204-
}
205-
var e *UnknownElementError
206-
if current.DataSize == -1 && errors.As(err, &e) {
207-
break
208-
}
209205
return err
210206
}
211207
if current.DataSize != -1 {

ebml.go

Lines changed: 6 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package ebml
77

88
import (
9-
"encoding/binary"
109
"encoding/xml"
1110
"errors"
1211
"fmt"
@@ -168,19 +167,18 @@ func NewDecoder(r io.ReadSeeker) *Decoder {
168167
// Next reads the following element id and data size.
169168
// It must be called before Decode.
170169
func (d *Decoder) Next() (el Element, n int, err error) {
171-
start := d.r.InputOffset()
172170
el.ID, err = d.r.ReadElementID()
173171
if err != nil {
174-
return Element{}, int(d.r.InputOffset() - start), err
172+
return Element{}, n, err
175173
}
176-
d.r.Release()
174+
n += d.r.Release()
177175
el.DataSize, err = d.r.ReadElementDataSize()
178176
if err != nil {
179-
return Element{}, int(d.r.InputOffset() - start), err
177+
return Element{}, n, err
180178
}
181-
d.r.Release()
179+
n += d.r.Release()
182180
d.el = &el
183-
return el, int(d.r.InputOffset() - start), err
181+
return el, n, err
184182
}
185183

186184
// NextOf reads the following element id and data size
@@ -260,71 +258,4 @@ func (d *Decoder) EndOfUnknownDataSize(parent Element, el Element) (bool, error)
260258
return !strings.HasPrefix(nextDef.Path, def.Path) || len(nextDef.Path) == len(def.Path), nil
261259
}
262260

263-
type UnknownElementError struct {
264-
el Element
265-
}
266-
267-
func (e UnknownElementError) Error() string {
268-
return fmt.Sprintf("ebml: unknown element: %v", e.el.ID)
269-
}
270-
271-
var ErrInvalidVINTLength = fmt.Errorf("ebml: invalid length descriptor")
272-
273-
// ReadElementID reads an Element ID based on
274-
// https://datatracker.ietf.org/doc/html/rfc8794#section-5
275-
func ReadElementID(r io.Reader, maxIDLength uint) (id schema.ElementID, n int, err error) {
276-
b := make([]byte, maxIDLength)
277-
// TODO: EBMLMaxIDLength can be greater than 8
278-
// https://datatracker.ietf.org/doc/html/rfc8794#section-11.2.4
279-
n, err = r.Read(b[:1])
280-
if err != nil {
281-
return 0, n, err
282-
}
283-
w := vintOctetLength(b)
284-
if w > len(b) {
285-
return 0, 1, ErrInvalidVINTLength
286-
}
287-
if w > 1 {
288-
m, err := r.Read(b[1:w])
289-
n += m
290-
if err != nil {
291-
return 0, n, err
292-
}
293-
}
294-
data := vintData(b, w)
295-
if vintDataAllOne(data, w) {
296-
return 0, n, errors.New("VINT_DATA MUST NOT be set to all 1")
297-
}
298-
i := binary.BigEndian.Uint64(dataPad(b[:w]))
299-
return schema.ElementID(i), n, nil
300-
}
301-
302-
func dataPad(b []byte) []byte {
303-
db := make([]byte, 8)
304-
copy(db[8-len(b):], b)
305-
return db
306-
}
307-
308-
// ReadElementDataSize reads an Element ID based on
309-
// https://datatracker.ietf.org/doc/html/rfc8794#section-6
310-
func ReadElementDataSize(r io.Reader, maxSizeLength uint) (ds int64, n int, err error) {
311-
b := make([]byte, maxSizeLength)
312-
// TODO: EBMLMaxSizeLength can be greater than 8
313-
// https://datatracker.ietf.org/doc/html/rfc8794#section-11.2.5
314-
n, err = r.Read(b[:1])
315-
if err != nil {
316-
return 0, n, err
317-
}
318-
w := vintOctetLength(b)
319-
m, err := r.Read(b[1:w])
320-
n += m
321-
if err != nil {
322-
return 0, n, err
323-
}
324-
d := vintData(b, w)
325-
if vintDataAllOne(d, w) {
326-
return -1, n, nil
327-
}
328-
i := binary.BigEndian.Uint64(dataPad(d))
329-
return int64(i), n, nil
330-
}
261+
var ErrInvalidVINTLength = ebmltext.ErrInvalidVINTWidth

ebml_test.go

Lines changed: 0 additions & 69 deletions
This file was deleted.

0 commit comments

Comments
 (0)