summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorPaulo Casanova <pasc@google.com>2017-10-26 16:10:03 +0100
committerPaulo Casanova <pasc@google.com>2017-10-27 11:43:27 +0000
commite27866a4f576fbf56e8faea6205d3e7ef615e21d (patch)
tree4ebe06030d14499e6973bfe8131045ad104aee57 /src/main
parent29ad7967edb2047c8e9eddc952002db9aaaf4a81 (diff)
downloadapkzlib-e27866a4f576fbf56e8faea6205d3e7ef615e21d.tar.gz
Minor fixes in EncodeUtils.
Made two minor fixes in EncodeUtils to remove Error Prone warnings and to get rid of a while(true) with a recursion loop that (reasonably) makes developers nervous. Test: no changes needed Bug: http://b/38159772 Change-Id: I12a5cf2310ded05bd2ca2f0565324a7d99331b70
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/android/apkzlib/zip/EncodeUtils.java38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/main/java/com/android/apkzlib/zip/EncodeUtils.java b/src/main/java/com/android/apkzlib/zip/EncodeUtils.java
index 94cabbe..259f64e 100644
--- a/src/main/java/com/android/apkzlib/zip/EncodeUtils.java
+++ b/src/main/java/com/android/apkzlib/zip/EncodeUtils.java
@@ -68,22 +68,30 @@ public class EncodeUtils {
*/
@Nonnull
public static String decode(@Nonnull byte[] data, @Nonnull GPFlags flags) {
- Charset charset = flagsCharset(flags);
+ return decode(data, flagsCharset(flags));
+ }
- while (true) {
- try {
- return charset.newDecoder()
- .onMalformedInput(CodingErrorAction.REPORT)
- .decode(ByteBuffer.wrap(data))
- .toString();
- } catch (CharacterCodingException e) {
- // If we're trying to decode ASCII, try UTF-8. Otherwise, revert to the default
- // behavior (usually replacing invalid characters).
- if (charset == Charsets.US_ASCII) {
- charset = Charsets.UTF_8;
- } else {
- return charset.decode(ByteBuffer.wrap(data)).toString();
- }
+ /**
+ * Decodes a file name.
+ *
+ * @param data the raw data
+ * @param charset the charset to use
+ * @return the decode file name
+ */
+ @Nonnull
+ private static String decode(@Nonnull byte[] data, @Nonnull Charset charset) {
+ try {
+ return charset.newDecoder()
+ .onMalformedInput(CodingErrorAction.REPORT)
+ .decode(ByteBuffer.wrap(data))
+ .toString();
+ } catch (CharacterCodingException e) {
+ // If we're trying to decode ASCII, try UTF-8. Otherwise, revert to the default
+ // behavior (usually replacing invalid characters).
+ if (charset.equals(Charsets.US_ASCII)) {
+ return decode(data, Charsets.UTF_8);
+ } else {
+ return charset.decode(ByteBuffer.wrap(data)).toString();
}
}
}