diff options
author | Paulo Casanova <pasc@google.com> | 2017-10-26 16:10:03 +0100 |
---|---|---|
committer | Paulo Casanova <pasc@google.com> | 2017-10-27 11:43:27 +0000 |
commit | e27866a4f576fbf56e8faea6205d3e7ef615e21d (patch) | |
tree | 4ebe06030d14499e6973bfe8131045ad104aee57 /src/main | |
parent | 29ad7967edb2047c8e9eddc952002db9aaaf4a81 (diff) | |
download | apkzlib-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.java | 38 |
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(); } } } |