denser error handling

This commit is contained in:
Henry Eklind 2016-07-22 00:56:37 +02:00
parent 2ece18bf05
commit 0dc1119122
No known key found for this signature in database
GPG key ID: D90EA149CDA76654
7 changed files with 26 additions and 55 deletions

View file

@ -60,11 +60,7 @@ func main() {
}
func metaflac(path string) (err error) {
err = list(path)
if err != nil {
return err
}
return nil
return list(path)
}
func list(path string) (err error) {

View file

@ -70,8 +70,7 @@ func New(r io.Reader) (stream *Stream, err error) {
if err != nil && err != meta.ErrReservedType {
return stream, err
}
err = block.Skip()
if err != nil {
if err = block.Skip(); err != nil {
return stream, err
}
isLast = block.IsLast
@ -137,8 +136,7 @@ func Parse(r io.Reader) (stream *Stream, err error) {
// the specification.
//
// ref: https://www.xiph.org/flac/format.html#format_overview
err = block.Skip()
if err != nil {
if err = block.Skip(); err != nil {
return stream, err
}
}

View file

@ -132,8 +132,7 @@ func (frame *Frame) Parse() error {
// 2 bytes: CRC-16 checksum.
var want uint16
err = binary.Read(frame.r, binary.BigEndian, &want)
if err != nil {
if err = binary.Read(frame.r, binary.BigEndian, &want); err != nil {
return unexpected(err)
}
got := frame.crc.Sum16()
@ -482,8 +481,7 @@ func (frame *Frame) parseHeader() error {
// 1 byte: CRC-8 checksum.
var want uint8
err = binary.Read(frame.hr, binary.BigEndian, &want)
if err != nil {
if err = binary.Read(frame.hr, binary.BigEndian, &want); err != nil {
return unexpected(err)
}
got := h.Sum8()

View file

@ -31,8 +31,7 @@ type Subframe struct {
func (frame *Frame) parseSubframe(bps uint) (subframe *Subframe, err error) {
// Parse subframe header.
subframe = new(Subframe)
err = subframe.parseHeader(frame.br)
if err != nil {
if err = subframe.parseHeader(frame.br); err != nil {
return subframe, err
}
// Adjust bps of subframe for wasted bits-per-sample.
@ -326,8 +325,7 @@ func (subframe *Subframe) decodeFIR(br *bits.Reader, bps uint) error {
}
// Decode subframe residuals.
err = subframe.decodeResidual(br)
if err != nil {
if err = subframe.decodeResidual(br); err != nil {
return err
}
@ -422,8 +420,7 @@ func (subframe *Subframe) decodeRicePart(br *bits.Reader, paramSize uint) error
// Decode the Rice encoded residuals of the partition.
for j := 0; j < nsamples; j++ {
err = subframe.decodeRiceResidual(br, param)
if err != nil {
if err = subframe.decodeRiceResidual(br, param); err != nil {
return err
}
}

View file

@ -39,15 +39,13 @@ func (block *Block) parseCueSheet() error {
cs.MCN = stringFromSZ(buf)
// 64 bits: NLeadInSamples.
err = binary.Read(block.lr, binary.BigEndian, &cs.NLeadInSamples)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &cs.NLeadInSamples); err != nil {
return unexpected(err)
}
// 1 bit: IsCompactDisc.
var x uint8
err = binary.Read(block.lr, binary.BigEndian, &x)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
return unexpected(err)
}
// mask = 10000000
@ -69,8 +67,7 @@ func (block *Block) parseCueSheet() error {
// Parse cue sheet tracks.
// 8 bits: (number of tracks)
err = binary.Read(block.lr, binary.BigEndian, &x)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
return unexpected(err)
}
if x < 1 {
@ -86,8 +83,7 @@ func (block *Block) parseCueSheet() error {
for i := range cs.Tracks {
// 64 bits: Offset.
track := &cs.Tracks[i]
err = binary.Read(block.lr, binary.BigEndian, &track.Offset)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &track.Offset); err != nil {
return unexpected(err)
}
if cs.IsCompactDisc && track.Offset%588 != 0 {
@ -95,8 +91,7 @@ func (block *Block) parseCueSheet() error {
}
// 8 bits: Num.
err = binary.Read(block.lr, binary.BigEndian, &track.Num)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &track.Num); err != nil {
return unexpected(err)
}
if _, ok := uniq[track.Num]; ok {
@ -131,8 +126,7 @@ func (block *Block) parseCueSheet() error {
track.ISRC = stringFromSZ(buf)
// 1 bit: IsAudio.
err = binary.Read(block.lr, binary.BigEndian, &x)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
return unexpected(err)
}
// mask = 10000000
@ -160,8 +154,7 @@ func (block *Block) parseCueSheet() error {
// Parse indicies.
// 8 bits: (number of indicies)
err = binary.Read(block.lr, binary.BigEndian, &x)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
return unexpected(err)
}
if x < 1 {
@ -174,14 +167,12 @@ func (block *Block) parseCueSheet() error {
for i := range track.Indicies {
index := &track.Indicies[i]
// 64 bits: Offset.
err = binary.Read(block.lr, binary.BigEndian, &index.Offset)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &index.Offset); err != nil {
return unexpected(err)
}
// 8 bits: Num.
err = binary.Read(block.lr, binary.BigEndian, &index.Num)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &index.Num); err != nil {
return unexpected(err)
}

View file

@ -56,8 +56,7 @@ type Block struct {
// ignore it.
func New(r io.Reader) (block *Block, err error) {
block = new(Block)
err = block.parseHeader(r)
if err != nil {
if err = block.parseHeader(r); err != nil {
return block, err
}
block.lr = io.LimitReader(r, block.Length)
@ -71,8 +70,7 @@ func Parse(r io.Reader) (block *Block, err error) {
if err != nil {
return block, err
}
err = block.Parse()
if err != nil {
if err = block.Parse(); err != nil {
return block, err
}
return block, nil

View file

@ -62,8 +62,7 @@ func (block *Block) parsePicture() error {
// 32 bits: (MIME type length).
var x uint32
err = binary.Read(block.lr, binary.BigEndian, &x)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
return unexpected(err)
}
@ -75,8 +74,7 @@ func (block *Block) parsePicture() error {
pic.MIME = string(buf)
// 32 bits: (description length).
err = binary.Read(block.lr, binary.BigEndian, &x)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
return unexpected(err)
}
@ -88,32 +86,27 @@ func (block *Block) parsePicture() error {
pic.Desc = string(buf)
// 32 bits: Width.
err = binary.Read(block.lr, binary.BigEndian, &pic.Width)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &pic.Width); err != nil {
return unexpected(err)
}
// 32 bits: Height.
err = binary.Read(block.lr, binary.BigEndian, &pic.Height)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &pic.Height); err != nil {
return unexpected(err)
}
// 32 bits: Depth.
err = binary.Read(block.lr, binary.BigEndian, &pic.Depth)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &pic.Depth); err != nil {
return unexpected(err)
}
// 32 bits: NPalColors.
err = binary.Read(block.lr, binary.BigEndian, &pic.NPalColors)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &pic.NPalColors); err != nil {
return unexpected(err)
}
// 32 bits: (data length).
err = binary.Read(block.lr, binary.BigEndian, &x)
if err != nil {
if err = binary.Read(block.lr, binary.BigEndian, &x); err != nil {
return unexpected(err)
}
if x == 0 {