diff options
author | PJ Fanning <fanningpj@apache.org> | 2020-01-02 21:10:54 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2020-01-02 21:10:54 +0000 |
commit | 8b389fdd4b538a3656396b6d57f3a7a02fbcfeab (patch) | |
tree | f95db669b9b61394bc8155010a9fa75a7c6a5227 /src/ooxml | |
parent | 7510f408dc50457a04c54f241b352f40434b0b50 (diff) | |
download | poi-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.java | 18 |
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); + } } /** |