Author: tilman
Date: Wed Feb 12 08:25:51 2025
New Revision: 1923751

URL: http://svn.apache.org/viewvc?rev=1923751&view=rev
Log:
PDFBOX-5950: close source immediately, as suggested by asdpboy

Modified:
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java?rev=1923751&r1=1923750&r2=1923751&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java
 Wed Feb 12 08:25:51 2025
@@ -431,7 +431,7 @@ public class PDFMergerUtility
     private void legacyMergeDocuments(MemoryUsageSetting memUsageSetting) 
throws IOException
     {
         PDDocument destination = null;
-        if (sources.size() > 0)
+        if (!sources.isEmpty())
         {
             // Make sure that:
             // - first Exception is kept
@@ -439,9 +439,6 @@ public class PDFMergerUtility
             // - all PDDocuments are closed
             // - all FileInputStreams are closed
             // - there's a way to see which errors occurred
-
-            List<PDDocument> tobeclosed = new 
ArrayList<PDDocument>(sources.size());
-
             try
             {
                 MemoryUsageSetting partitionedMemSetting = memUsageSetting != 
null ? 
@@ -451,7 +448,7 @@ public class PDFMergerUtility
 
                 for (Object sourceObject : sources)
                 {
-                    PDDocument sourceDoc = null;
+                    PDDocument sourceDoc;
                     if (sourceObject instanceof File)
                     {
                         sourceDoc = PDDocument.load((File) sourceObject, 
partitionedMemSetting);
@@ -461,8 +458,14 @@ public class PDFMergerUtility
                         sourceDoc = PDDocument.load((InputStream) sourceObject,
                                 partitionedMemSetting);
                     }
-                    tobeclosed.add(sourceDoc);
-                    appendDocument(destination, sourceDoc);
+                    try
+                    {
+                        appendDocument(destination, sourceDoc);
+                    }
+                    finally
+                    {
+                        IOUtils.closeAndLogException(sourceDoc, LOG, 
"PDDocument", null);
+                    }
                 }
                 
                 // optionally set meta data
@@ -490,11 +493,6 @@ public class PDFMergerUtility
                 {
                     IOUtils.closeAndLogException(destination, LOG, 
"PDDocument", null);
                 }
-
-                for (PDDocument doc : tobeclosed)
-                {
-                    IOUtils.closeAndLogException(doc, LOG, "PDDocument", null);
-                }
             }
         }
     }


Reply via email to