Browse Source

allow TarOutputStream to be closed more than once, PR 38027

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@392045 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 19 years ago
parent
commit
97bd6e2bf5
4 changed files with 46 additions and 3 deletions
  1. +1
    -0
      CONTRIBUTORS
  2. +3
    -0
      contributors.xml
  3. +9
    -3
      src/main/org/apache/tools/tar/TarOutputStream.java
  4. +33
    -0
      src/testcases/org/apache/tools/tar/TarOutputStreamTest.java

+ 1
- 0
CONTRIBUTORS View File

@@ -172,6 +172,7 @@ Nico Seessle
Nigel Magnay Nigel Magnay
Oliver Merkel Oliver Merkel
Oliver Rossmueller Oliver Rossmueller
Oystein Gisnas
Patrick C. Beard Patrick C. Beard
Patrick Chanezon Patrick Chanezon
Patrick G. Heck (Gus Heck) Patrick G. Heck (Gus Heck)


+ 3
- 0
contributors.xml View File

@@ -698,6 +698,9 @@
<first>Oliver</first> <first>Oliver</first>
<last>Rossmueller</last> <last>Rossmueller</last>
</name> </name>
<name>
<first>&#216;ystein</first>
<last>Gisn&#229;s</last>
<name> <name>
<first>Patrick</first> <first>Patrick</first>
<last>C.</last> <last>C.</last>


+ 9
- 3
src/main/org/apache/tools/tar/TarOutputStream.java View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2000-2002,2004-2005 The Apache Software Foundation
* Copyright 2000-2002,2004-2006 The Apache Software Foundation
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -52,6 +52,8 @@ public class TarOutputStream extends FilterOutputStream {
protected byte[] assemBuf; protected byte[] assemBuf;
protected TarBuffer buffer; protected TarBuffer buffer;
protected int longFileMode = LONGFILE_ERROR; protected int longFileMode = LONGFILE_ERROR;
private boolean closed = false;


/** /**
* Constructor for TarInputStream. * Constructor for TarInputStream.
@@ -136,8 +138,12 @@ public class TarOutputStream extends FilterOutputStream {
* @throws IOException on error * @throws IOException on error
*/ */
public void close() throws IOException { public void close() throws IOException {
this.finish();
this.buffer.close();
if (!closed) {
this.finish();
this.buffer.close();
out.close();
closed = true;
}
} }


/** /**


+ 33
- 0
src/testcases/org/apache/tools/tar/TarOutputStreamTest.java View File

@@ -0,0 +1,33 @@
/*
* Copyright 2006 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package org.apache.tools.tar;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import junit.framework.TestCase;

public class TarOutputStreamTest extends TestCase {

public void testClose() throws IOException {
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
TarOutputStream stream = new TarOutputStream(byteStream);
stream.close();
stream.close();
}
}

Loading…
Cancel
Save