From a7c9804995a1bff4c64985395d382a07cc87a2d7 Mon Sep 17 00:00:00 2001 From: cketti Date: Fri, 6 Sep 2013 19:24:19 +0200 Subject: [PATCH] Make sure the InputStream is always closed Moving the code to create the OutputStream wrappers into the try-block ensures that the InputStream is closed in case something goes wrong. --- .../k9/mail/internet/BinaryTempFileBody.java | 17 +++++++++-------- src/com/fsck/k9/mail/store/LocalStore.java | 17 +++++++++-------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/com/fsck/k9/mail/internet/BinaryTempFileBody.java b/src/com/fsck/k9/mail/internet/BinaryTempFileBody.java index eab48dbab..f0dd6f473 100644 --- a/src/com/fsck/k9/mail/internet/BinaryTempFileBody.java +++ b/src/com/fsck/k9/mail/internet/BinaryTempFileBody.java @@ -52,16 +52,17 @@ public class BinaryTempFileBody implements Body { } public void writeTo(OutputStream out) throws IOException, MessagingException { - boolean closeStream = false; InputStream in = getInputStream(); - if (MimeUtil.isBase64Encoding(mEncoding)) { - out = new Base64OutputStream(out); - closeStream = true; - } else if (MimeUtil.isQuotedPrintableEncoded(mEncoding)){ - out = new QuotedPrintableOutputStream(out, false); - closeStream = true; - } try { + boolean closeStream = false; + if (MimeUtil.isBase64Encoding(mEncoding)) { + out = new Base64OutputStream(out); + closeStream = true; + } else if (MimeUtil.isQuotedPrintableEncoded(mEncoding)){ + out = new QuotedPrintableOutputStream(out, false); + closeStream = true; + } + try { IOUtils.copy(in, out); } finally { diff --git a/src/com/fsck/k9/mail/store/LocalStore.java b/src/com/fsck/k9/mail/store/LocalStore.java index f56a088bc..f05ca59ac 100644 --- a/src/com/fsck/k9/mail/store/LocalStore.java +++ b/src/com/fsck/k9/mail/store/LocalStore.java @@ -4028,16 +4028,17 @@ public class LocalStore extends Store implements Serializable { @Override public void writeTo(OutputStream out) throws IOException, MessagingException { - boolean closeStream = false; InputStream in = getInputStream(); - if (MimeUtil.isBase64Encoding(mEncoding)) { - out = new Base64OutputStream(out); - closeStream = true; - } else if (MimeUtil.isQuotedPrintableEncoded(mEncoding)){ - out = new QuotedPrintableOutputStream(out, false); - closeStream = true; - } try { + boolean closeStream = false; + if (MimeUtil.isBase64Encoding(mEncoding)) { + out = new Base64OutputStream(out); + closeStream = true; + } else if (MimeUtil.isQuotedPrintableEncoded(mEncoding)){ + out = new QuotedPrintableOutputStream(out, false); + closeStream = true; + } + try { IOUtils.copy(in, out); } finally {