mirror of https://github.com/dsoprea/go-exif.git
Now a specific error for unparseable undefined tags
parent
73303ea590
commit
45986dbda3
|
@ -113,6 +113,8 @@ func (ite *IfdTagEntry) GetRawBytes() (rawBytes []byte, err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == exifcommon.ErrUnhandledUndefinedTypedTag {
|
if err == exifcommon.ErrUnhandledUndefinedTypedTag {
|
||||||
ite.setIsUnhandledUnknown(true)
|
ite.setIsUnhandledUnknown(true)
|
||||||
|
} else if err == exifundefined.ErrUnparseableValue {
|
||||||
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
log.Panic(err)
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
|
@ -148,7 +150,7 @@ func (ite *IfdTagEntry) Value() (value interface{}, err error) {
|
||||||
|
|
||||||
value, err = exifundefined.Decode(valueContext)
|
value, err = exifundefined.Decode(valueContext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == exifcommon.ErrUnhandledUndefinedTypedTag {
|
if err == exifcommon.ErrUnhandledUndefinedTypedTag || err == exifundefined.ErrUnparseableValue {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,13 @@ func Decode(valueContext *exifcommon.ValueContext) (value EncodeableValue, err e
|
||||||
}
|
}
|
||||||
|
|
||||||
value, err = decoder.Decode(valueContext)
|
value, err = decoder.Decode(valueContext)
|
||||||
log.PanicIf(err)
|
if err != nil {
|
||||||
|
if err == ErrUnparseableValue {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
return value, nil
|
return value, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package exifundefined
|
package exifundefined
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
|
||||||
"github.com/dsoprea/go-exif/v2/common"
|
"github.com/dsoprea/go-exif/v2/common"
|
||||||
|
@ -10,6 +12,10 @@ const (
|
||||||
UnparseableUnknownTagValuePlaceholder = "!UNKNOWN"
|
UnparseableUnknownTagValuePlaceholder = "!UNKNOWN"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrUnparseableValue = errors.New("unparseable undefined tag")
|
||||||
|
)
|
||||||
|
|
||||||
// UndefinedValueEncoder knows how to encode an undefined-type tag's value to
|
// UndefinedValueEncoder knows how to encode an undefined-type tag's value to
|
||||||
// bytes.
|
// bytes.
|
||||||
type UndefinedValueEncoder interface {
|
type UndefinedValueEncoder interface {
|
||||||
|
|
|
@ -127,7 +127,13 @@ func GetFlatExifData(exifData []byte) (exifTags []ExifTag, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
valueBytes, err := ite.GetRawBytes()
|
valueBytes, err := ite.GetRawBytes()
|
||||||
log.PanicIf(err)
|
if err != nil {
|
||||||
|
if err == exifundefined.ErrUnparseableValue {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
value, err := ite.Value()
|
value, err := ite.Value()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue