diff options
author | Danny Baumann <dannybaumann@web.de> | 2017-05-24 12:32:05 +0200 |
---|---|---|
committer | Danny Baumann <dannybaumann@web.de> | 2017-05-29 06:41:15 +0000 |
commit | 70ccb25cd8109f9f4473fc7ea32ec9d83e2d4036 (patch) | |
tree | 1960461bd0392415cbc11dc1814fabab13506fa3 | |
parent | c43715b871b7e9309cc97774c6ce127e7cfcc990 (diff) | |
download | android_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.java | 19 |
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 |