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
Oliver Merkel
Oliver Rossmueller
Oystein Gisnas
Patrick C. Beard
Patrick Chanezon
Patrick G. Heck (Gus Heck)


+ 3
- 0
contributors.xml View File

@@ -698,6 +698,9 @@
<first>Oliver</first>
<last>Rossmueller</last>
</name>
<name>
<first>&#216;ystein</first>
<last>Gisn&#229;s</last>
<name>
<first>Patrick</first>
<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");
* 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 TarBuffer buffer;
protected int longFileMode = LONGFILE_ERROR;
private boolean closed = false;

/**
* Constructor for TarInputStream.
@@ -136,8 +138,12 @@ public class TarOutputStream extends FilterOutputStream {
* @throws IOException on error
*/
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