Now a specific error for unparseable undefined tags

for/master
Dustin Oprea 2020-05-02 16:23:19 -04:00
parent 73303ea590
commit 45986dbda3
4 changed files with 23 additions and 3 deletions

View File

@ -113,6 +113,8 @@ func (ite *IfdTagEntry) GetRawBytes() (rawBytes []byte, err error) {
if err != nil {
if err == exifcommon.ErrUnhandledUndefinedTypedTag {
ite.setIsUnhandledUnknown(true)
} else if err == exifundefined.ErrUnparseableValue {
return nil, err
} else {
log.Panic(err)
}
@ -148,7 +150,7 @@ func (ite *IfdTagEntry) Value() (value interface{}, err error) {
value, err = exifundefined.Decode(valueContext)
if err != nil {
if err == exifcommon.ErrUnhandledUndefinedTypedTag {
if err == exifcommon.ErrUnhandledUndefinedTypedTag || err == exifundefined.ErrUnparseableValue {
return nil, err
}

View File

@ -49,7 +49,13 @@ func Decode(valueContext *exifcommon.ValueContext) (value EncodeableValue, err e
}
value, err = decoder.Decode(valueContext)
log.PanicIf(err)
if err != nil {
if err == ErrUnparseableValue {
return nil, err
}
log.Panic(err)
}
return value, nil
}

View File

@ -1,6 +1,8 @@
package exifundefined
import (
"errors"
"encoding/binary"
"github.com/dsoprea/go-exif/v2/common"
@ -10,6 +12,10 @@ const (
UnparseableUnknownTagValuePlaceholder = "!UNKNOWN"
)
var (
ErrUnparseableValue = errors.New("unparseable undefined tag")
)
// UndefinedValueEncoder knows how to encode an undefined-type tag's value to
// bytes.
type UndefinedValueEncoder interface {

View File

@ -127,7 +127,13 @@ func GetFlatExifData(exifData []byte) (exifTags []ExifTag, err error) {
}
valueBytes, err := ite.GetRawBytes()
log.PanicIf(err)
if err != nil {
if err == exifundefined.ErrUnparseableValue {
continue
}
log.Panic(err)
}
value, err := ite.Value()
if err != nil {