Author: tilman
Date: Mon Nov 2 17:18:26 2015
New Revision: 1712090
URL: http://svn.apache.org/viewvc?rev=1712090&view=rev
Log:
PDFBOX-3002: close scratch files on IOException, as suggested by Jesse Long
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1712090&r1=1712089&r2=1712090&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Mon Nov 2 17:18:26 2015
@@ -846,11 +846,20 @@ public class PDDocument implements Close
MemoryUsageSetting memUsageSetting) throws
IOException
{
RandomAccessBufferedFileInputStream raFile = new
RandomAccessBufferedFileInputStream(file);
- PDFParser parser = new PDFParser(raFile, password, keyStore, alias,
new ScratchFile(memUsageSetting));
try
{
- parser.parse();
- return parser.getPDDocument();
+ ScratchFile scratchFile = new ScratchFile(memUsageSetting);
+ try
+ {
+ PDFParser parser = new PDFParser(raFile, password, keyStore,
alias, scratchFile);
+ parser.parse();
+ return parser.getPDDocument();
+ }
+ catch (IOException ioe)
+ {
+ IOUtils.closeQuietly(scratchFile);
+ throw ioe;
+ }
}
catch (IOException ioe)
{
@@ -965,10 +974,18 @@ public class PDDocument implements Close
String alias, MemoryUsageSetting
memUsageSetting) throws IOException
{
ScratchFile scratchFile = new ScratchFile(memUsageSetting);
- RandomAccessRead source = scratchFile.createBuffer(input);
- PDFParser parser = new PDFParser(source, password, keyStore, alias,
scratchFile);
- parser.parse();
- return parser.getPDDocument();
+ try
+ {
+ RandomAccessRead source = scratchFile.createBuffer(input);
+ PDFParser parser = new PDFParser(source, password, keyStore,
alias, scratchFile);
+ parser.parse();
+ return parser.getPDDocument();
+ }
+ catch (IOException ioe)
+ {
+ IOUtils.closeQuietly(scratchFile);
+ throw ioe;
+ }
}
/**