aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2020-01-02 21:10:54 +0000
committerPJ Fanning <fanningpj@apache.org>2020-01-02 21:10:54 +0000
commit8b389fdd4b538a3656396b6d57f3a7a02fbcfeab (patch)
treef95db669b9b61394bc8155010a9fa75a7c6a5227 /src/ooxml
parent7510f408dc50457a04c54f241b352f40434b0b50 (diff)
downloadpoi-8b389fdd4b538a3656396b6d57f3a7a02fbcfeab.tar.gz
poi-8b389fdd4b538a3656396b6d57f3a7a02fbcfeab.zip
[bug-64045] close resources if we throw exceptions
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1872270 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml')
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
index cc7e2bb85c..c57db95506 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
@@ -493,8 +493,9 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Su
* Create a new SpreadsheetML package and setup the default minimal content
*/
protected static OPCPackage newPackage(XSSFWorkbookType workbookType) {
+ OPCPackage pkg = null;
try {
- OPCPackage pkg = OPCPackage.create(new ByteArrayOutputStream()); // NOSONAR - we do not want to close this here
+ pkg = OPCPackage.create(new ByteArrayOutputStream()); // NOSONAR - we do not want to close this here
// Main part
PackagePartName corePartName = PackagingURIHelper.createPartName(XSSFRelation.WORKBOOK.getDefaultFileName());
// Create main part relationship
@@ -503,11 +504,11 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Su
pkg.createPart(corePartName, workbookType.getContentType());
pkg.getPackageProperties().setCreatorProperty(DOCUMENT_CREATOR);
-
- return pkg;
- } catch (Exception e){
+ } catch (Exception e) {
+ IOUtils.closeQuietly(pkg);
throw new POIXMLException(e);
}
+ return pkg;
}
/**
@@ -541,7 +542,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Su
XSSFPictureData img = createRelationship(XSSFPictureData.RELATIONS[format], this.xssfFactory, imageNumber, true).getDocumentPart();
try (OutputStream out = img.getPackagePart().getOutputStream()) {
out.write(pictureData);
- } catch (IOException e){
+ } catch (IOException e) {
throw new POIXMLException(e);
}
pictures.add(img);
@@ -589,8 +590,11 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Su
@Override
public void close() throws IOException {
- super.close();
- sharedStringSource.close();
+ try {
+ super.close();
+ } finally {
+ IOUtils.closeQuietly(sharedStringSource);
+ }
}
/**