Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7648b37d authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Make sure all FDs are correctly closed." into jb-mr1.1-dev

parents fac619a3 5c32b6da
Loading
Loading
Loading
Loading
+19 −11
Original line number Diff line number Diff line
@@ -154,6 +154,9 @@ public final class BinaryDictionaryFileDumper {
        for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) {
            InputStream originalSourceStream = null;
            InputStream inputStream = null;
            InputStream uncompressedStream = null;
            InputStream decryptedStream = null;
            BufferedInputStream bufferedStream = null;
            File outputFile = null;
            FileOutputStream outputStream = null;
            AssetFileDescriptor afd = null;
@@ -173,18 +176,19 @@ public final class BinaryDictionaryFileDumper {
                // Get the appropriate decryption method for this try
                switch (mode) {
                    case COMPRESSED_CRYPTED_COMPRESSED:
                        inputStream = FileTransforms.getUncompressedStream(
                                FileTransforms.getDecryptedStream(
                                        FileTransforms.getUncompressedStream(
                                                originalSourceStream)));
                        uncompressedStream =
                                FileTransforms.getUncompressedStream(originalSourceStream);
                        decryptedStream = FileTransforms.getDecryptedStream(uncompressedStream);
                        inputStream = FileTransforms.getUncompressedStream(decryptedStream);
                        break;
                    case CRYPTED_COMPRESSED:
                        inputStream = FileTransforms.getUncompressedStream(
                                FileTransforms.getDecryptedStream(originalSourceStream));
                        decryptedStream = FileTransforms.getDecryptedStream(originalSourceStream);
                        inputStream = FileTransforms.getUncompressedStream(decryptedStream);
                        break;
                    case COMPRESSED_CRYPTED:
                        inputStream = FileTransforms.getDecryptedStream(
                                FileTransforms.getUncompressedStream(originalSourceStream));
                        uncompressedStream =
                                FileTransforms.getUncompressedStream(originalSourceStream);
                        inputStream = FileTransforms.getDecryptedStream(uncompressedStream);
                        break;
                    case COMPRESSED_ONLY:
                        inputStream = FileTransforms.getUncompressedStream(originalSourceStream);
@@ -196,7 +200,8 @@ public final class BinaryDictionaryFileDumper {
                        inputStream = originalSourceStream;
                        break;
                }
                checkMagicAndCopyFileTo(new BufferedInputStream(inputStream), outputStream);
                bufferedStream = new BufferedInputStream(inputStream);
                checkMagicAndCopyFileTo(bufferedStream, outputStream);
                outputStream.flush();
                outputStream.close();
                final File finalFile = new File(finalFileName);
@@ -228,8 +233,11 @@ public final class BinaryDictionaryFileDumper {
                try {
                    // inputStream.close() will close afd, we should not call afd.close().
                    if (null != inputStream) inputStream.close();
                    if (null != uncompressedStream) uncompressedStream.close();
                    if (null != decryptedStream) decryptedStream.close();
                    if (null != bufferedStream) bufferedStream.close();
                } catch (Exception e) {
                    Log.e(TAG, "Exception while closing a cross-process file descriptor : " + e);
                    Log.e(TAG, "Exception while closing a file descriptor : " + e);
                }
                try {
                    if (null != outputStream) outputStream.close();