From 246b80980fe1ecee037440b49137b3203cd3095f Mon Sep 17 00:00:00 2001 From: "Jesse N. Glick" Date: Tue, 28 Feb 2012 18:54:16 +0000 Subject: [PATCH] #52743: stream leak. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1294780 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 2 +- .../ant/taskdefs/optional/ReplaceRegExp.java | 41 ++++++++----------- 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/WHATSNEW b/WHATSNEW index 749093a27..f46391251 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -12,7 +12,7 @@ Fixed bugs: Bugzilla Report 52754. * Fixed some potential stream leaks. - Bugzilla Reports 52738, 52740, 52742. + Bugzilla Reports 52738, 52740, 52742, 52743. Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java index afb2f79cc..224848630 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java @@ -21,11 +21,11 @@ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; -import java.io.FileReader; import java.io.FileOutputStream; -import java.io.FileWriter; import java.io.InputStreamReader; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; @@ -351,23 +351,16 @@ public class ReplaceRegExp extends Task { protected void doReplace(File f, int options) throws IOException { File temp = FILE_UTILS.createTempFile("replace", ".txt", null, true, true); - - Reader r = null; - Writer w = null; - BufferedWriter bw = null; - try { - if (encoding == null) { - r = new FileReader(f); - w = new FileWriter(temp); - } else { - r = new InputStreamReader(new FileInputStream(f), encoding); - w = new OutputStreamWriter(new FileOutputStream(temp), - encoding); - } + InputStream is = new FileInputStream(f); + try { + Reader r = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is); + OutputStream os = new FileOutputStream(temp); + try { + Writer w = encoding != null ? new OutputStreamWriter(os, encoding) : new OutputStreamWriter(os); - BufferedReader br = new BufferedReader(r); - bw = new BufferedWriter(w); + BufferedReader br = new BufferedReader(r); + BufferedWriter bw = new BufferedWriter(w); boolean changes = false; @@ -462,11 +455,6 @@ public class ReplaceRegExp extends Task { bw.flush(); - r.close(); - r = null; - w.close(); - w = null; - if (changes) { log("File has changed; saving the updated file", Project.MSG_VERBOSE); try { @@ -483,10 +471,13 @@ public class ReplaceRegExp extends Task { } else { log("No change made", Project.MSG_DEBUG); } + } finally { + os.close(); + } + } finally { + is.close(); + } } finally { - FileUtils.close(r); - FileUtils.close(bw); - FileUtils.close(w); if (temp != null) { temp.delete(); }