From 832fe98aea5459c708d6b255d190efdfb60ae07e Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Thu, 8 Mar 2001 11:03:41 +0000 Subject: [PATCH] Make sure zip files, that is reading from, will be closed. Submitted by: David Rees git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268772 13f79535-47bb-0310-9956-ffa450edef68 --- src/etc/testcases/taskdefs/zip.xml | 28 +++++++++++++++++++ .../org/apache/tools/ant/taskdefs/Zip.java | 22 ++++++++++----- .../apache/tools/ant/taskdefs/ZipTest.java | 13 +++++++++ 3 files changed, 56 insertions(+), 7 deletions(-) diff --git a/src/etc/testcases/taskdefs/zip.xml b/src/etc/testcases/taskdefs/zip.xml index 1c8c63e2d..e1ed9a5b5 100644 --- a/src/etc/testcases/taskdefs/zip.xml +++ b/src/etc/testcases/taskdefs/zip.xml @@ -25,9 +25,37 @@ basedir="."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Zip.java b/src/main/org/apache/tools/ant/taskdefs/Zip.java index fc005050f..4a7e605b3 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Zip.java +++ b/src/main/org/apache/tools/ant/taskdefs/Zip.java @@ -270,15 +270,23 @@ public class Zip extends MatchingTask { File zipSrc = fs.getSrc(); ZipEntry entry; - ZipInputStream in = new ZipInputStream(new FileInputStream(zipSrc)); - while ((entry = in.getNextEntry()) != null) { - String vPath = entry.getName(); - if (zipScanner.match(vPath)) { - addParentDirs(null, vPath, zOut, prefix); - if (! entry.isDirectory()) { - zipFile(in, zOut, prefix+vPath, entry.getTime()); + ZipInputStream in = null; + try { + in = new ZipInputStream(new FileInputStream(zipSrc)); + + while ((entry = in.getNextEntry()) != null) { + String vPath = entry.getName(); + if (zipScanner.match(vPath)) { + addParentDirs(null, vPath, zOut, prefix); + if (! entry.isDirectory()) { + zipFile(in, zOut, prefix+vPath, entry.getTime()); + } } } + } finally { + if (in != null) { + in.close(); + } } } diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java index 5d82d62be..ada7d1a15 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java @@ -87,4 +87,17 @@ public class ZipTest extends TaskdefsTest { executeTarget("cleanup"); } + public void test5() { + executeTarget("test5"); + } + + + public void test6() { + executeTarget("test6"); + } + + + public void test7() { + executeTarget("test7"); + } }