summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2017-05-24 12:32:05 +0200
committerDanny Baumann <dannybaumann@web.de>2017-05-29 06:41:15 +0000
commit70ccb25cd8109f9f4473fc7ea32ec9d83e2d4036 (patch)
tree1960461bd0392415cbc11dc1814fabab13506fa3
parentc43715b871b7e9309cc97774c6ce127e7cfcc990 (diff)
downloadandroid_packages_apps_Email-70ccb25cd8109f9f4473fc7ea32ec9d83e2d4036.tar.gz
android_packages_apps_Email-70ccb25cd8109f9f4473fc7ea32ec9d83e2d4036.tar.bz2
android_packages_apps_Email-70ccb25cd8109f9f4473fc7ea32ec9d83e2d4036.zip
Close body InputStreams correctly.
The getInputStream() method returns a new stream each time, so it's not suitable for getting references to previously opened InputStreams. Change-Id: I68110810edecccdcd79a0503e210f5e7f17860d8
-rw-r--r--provider_src/com/android/email/provider/Utilities.java19
1 files changed, 6 insertions, 13 deletions
diff --git a/provider_src/com/android/email/provider/Utilities.java b/provider_src/com/android/email/provider/Utilities.java
index 52303b852..bfdf9eb63 100644
--- a/provider_src/com/android/email/provider/Utilities.java
+++ b/provider_src/com/android/email/provider/Utilities.java
@@ -40,6 +40,8 @@ import com.android.emailcommon.utility.ConversionUtilities;
import com.android.mail.utils.LogUtils;
import com.android.mail.utils.Utils;
+import org.apache.commons.io.IOUtils;
+
import java.io.InputStream;
import java.io.IOException;
import java.util.ArrayList;
@@ -133,8 +135,9 @@ public class Utilities {
MimeUtility.collectParts(message, viewables, attachments);
// Don't close the viewables attachment InputStream yet
+ final ArrayList<InputStream> bodyInputStreams = new ArrayList<InputStream>();
final ConversionUtilities.BodyFieldData data =
- ConversionUtilities.parseBodyFields(viewables, false);
+ ConversionUtilities.parseBodyFields(viewables, bodyInputStreams);
// set body and local message values
localMessage.setFlags(data.isQuotedReply, data.isQuotedForward);
@@ -186,18 +189,8 @@ public class Utilities {
}
// Close any parts that may still be open
- for (final Part part : viewables) {
- if (part.getBody() == null) {
- continue;
- }
- try {
- InputStream is = part.getBody().getInputStream();
- if (is != null) {
- is.close();
- }
- } catch (IOException | MessagingException io) {
- // Ignore
- }
+ for (final InputStream is : bodyInputStreams) {
+ IOUtils.closeQuietly(is);
}
// One last update of message with two updated flags