diff options
| author | 2016-09-09 22:46:55 +0000 | |
|---|---|---|
| committer | 2016-09-09 22:46:55 +0000 | |
| commit | 4c3668d7aafa8215a136fa095175b0d3b2893eec (patch) | |
| tree | 29552a5f1bf14e8ba759a749c3c9ac98d23a89a5 | |
| parent | 983f30a5a4a55ce9b537ade684d0856a7e2f5704 (diff) | |
| parent | 56ea7b490107e4531ab4db6f74671c34b5c59fd3 (diff) | |
DO NOT MERGE) ExifInterface: Make saveAttributes throw an exception before change
am: 56ea7b4901
Change-Id: If8497c9ad514037ce4c1f72dee6f77426d3ecd50
| -rw-r--r-- | media/java/android/media/ExifInterface.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java index 0e7f995af6e8..4afa4e32575d 100644 --- a/media/java/android/media/ExifInterface.java +++ b/media/java/android/media/ExifInterface.java @@ -679,14 +679,14 @@ public class ExifInterface { if (value instanceof long[]) { long[] array = (long[]) value; if (array.length == 1) { - return (double) array[0]; + return array[0]; } throw new NumberFormatException("There are more than one component"); } if (value instanceof int[]) { int[] array = (int[]) value; if (array.length == 1) { - return (double) array[0]; + return array[0]; } throw new NumberFormatException("There are more than one component"); } @@ -1083,6 +1083,7 @@ public class ExifInterface { private int mThumbnailOffset; private int mThumbnailLength; private byte[] mThumbnailBytes; + private boolean mIsSupportedFile; // Pattern to check non zero timestamp private static final Pattern sNonZeroTimePattern = Pattern.compile(".*[1-9].*"); @@ -1472,9 +1473,11 @@ public class ExifInterface { // Process JPEG input stream getJpegAttributes(in); + mIsSupportedFile = true; } catch (IOException e) { // Ignore exceptions in order to keep the compatibility with the old versions of // ExifInterface. + mIsSupportedFile = false; Log.w(TAG, "Invalid image: ExifInterface got an unsupported image format file" + "(ExifInterface supports JPEG and some RAW image formats only) " + "or a corrupted JPEG file to ExifInterface.", e); @@ -1553,9 +1556,9 @@ public class ExifInterface { * and make a single call rather than multiple calls for each attribute. */ public void saveAttributes() throws IOException { - if (mIsRaw) { + if (!mIsSupportedFile || mIsRaw) { throw new UnsupportedOperationException( - "ExifInterface does not support saving attributes on RAW formats."); + "ExifInterface only supports saving attributes on JPEG formats."); } if (mIsInputStream || (mSeekableFileDescriptor == null && mFilename == null)) { throw new UnsupportedOperationException( @@ -2352,7 +2355,7 @@ public class ExifInterface { for (int i = 0; i < EXIF_TAGS.length; ++i) { int sum = 0; for (Map.Entry entry : (Set<Map.Entry>) mAttributes[i].entrySet()) { - final ExifAttribute exifAttribute = (ExifAttribute) ((Map.Entry) entry).getValue(); + final ExifAttribute exifAttribute = (ExifAttribute) entry.getValue(); final int size = exifAttribute.size(); if (size > 4) { sum += size; |