diff --git a/src/decoder/mod.rs b/src/decoder/mod.rs index 9dc07c6..fed59f6 100644 --- a/src/decoder/mod.rs +++ b/src/decoder/mod.rs @@ -493,7 +493,7 @@ impl Decoder { } } if units_read < buffer_size { - return Err(TiffError::FormatError("Inconsistent sizes encountered.".to_string())); + return Err(TiffError::FormatError(TiffFormatError::InconsistentSizesEncountered)); } if let Ok(predictor) = self.get_tag_u32(ifd::Tag::Predictor) { result = match FromPrimitive::from_u32(predictor) { diff --git a/src/error.rs b/src/error.rs index 113d793..07776cd 100644 --- a/src/error.rs +++ b/src/error.rs @@ -25,6 +25,8 @@ pub enum TiffFormatError { TiffSignatureNotFound, TiffSignatureInvalid, ImageFileDirectoryNotFound, + InconsistentSizesEncountered, + InvalidTag, RequiredTagNotFound(Tag), UnknownPredictor(u32), UnsignedIntegerExpected(Value), @@ -37,6 +39,8 @@ impl fmt::Display for TiffFormatError { TiffSignatureNotFound => write!(fmt, "TIFF signature not found."), TiffSignatureInvalid => write!(fmt, "TIFF signature invalid."), ImageFileDirectoryNotFound => write!(fmt, "Image file directory not found."), + InconsistentSizesEncountered => write!(fmt, "Inconsistent sizes encountered."), + InvalidTag => write!(fmt, "Image contains invalid tag."), RequiredTagNotFound(ref tag) => write!(fmt, "Required tag `{:?}` not found.", tag), UnknownPredictor(ref predictor) => write!(fmt, "Unknown predictor “{}” encountered", predictor), UnsignedIntegerExpected(ref val) => write!(fmt, "Expected unsigned integer, {:?} found.", val), @@ -113,8 +117,8 @@ impl From for TiffError { } impl From for TiffError { - fn from(err: string::FromUtf8Error) -> TiffError { - TiffError::FormatError(String::from("Image contains invalid tag.")) + fn from(_err: string::FromUtf8Error) -> TiffError { + TiffError::FormatError(TiffFormatError::InvalidTag) } }