Merge "Handle error when string length=0 in IfdParser" into gb-ub-photos-arches
diff --git a/src/com/android/gallery3d/exif/IfdParser.java b/src/com/android/gallery3d/exif/IfdParser.java
index b0b0bce..0d1059c 100644
--- a/src/com/android/gallery3d/exif/IfdParser.java
+++ b/src/com/android/gallery3d/exif/IfdParser.java
@@ -125,9 +125,13 @@
     }
 
     public String readString(int n) throws IOException {
-        byte[] buf = new byte[n];
-        mTiffStream.readOrThrow(buf);
-        return new String(buf, 0, n - 1, "UTF8");
+        if (n > 0) {
+            byte[] buf = new byte[n];
+            mTiffStream.readOrThrow(buf);
+            return new String(buf, 0, n - 1, "UTF8");
+        } else {
+            return "";
+        }
     }
 
     public String readString(int n, Charset charset) throws IOException {
diff --git a/tests/src/com/android/gallery3d/exif/ExifParserTest.java b/tests/src/com/android/gallery3d/exif/ExifParserTest.java
index 34bbbda..35f4f3f 100644
--- a/tests/src/com/android/gallery3d/exif/ExifParserTest.java
+++ b/tests/src/com/android/gallery3d/exif/ExifParserTest.java
@@ -283,12 +283,8 @@
                 }
                 break;
             case ExifTag.TYPE_ASCII:
-                buf = new byte[tag.getComponentCount()];
-                parser.read(buf);
-                int length = 0;
-                while (buf[length] != 0 && length < buf.length) length++;
-                // trim the string to fit the answer from xml
-                sbuilder.append(new String(buf, 0, length).trim());
+                // trim the string for comparison between xml
+                sbuilder.append(parser.readString(tag.getComponentCount()).trim());
                 break;
             case ExifTag.TYPE_INT:
                 for(int i = 0; i < tag.getComponentCount(); i++) {