You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2022/12/04 12:16:51 UTC

svn commit: r1905732 - /pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBufferedFile.java

Author: lehmi
Date: Sun Dec  4 12:16:51 2022
New Revision: 1905732

URL: http://svn.apache.org/viewvc?rev=1905732&view=rev
Log:
PDFBOX-5550: avoid NPE

Modified:
    pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBufferedFile.java

Modified: pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBufferedFile.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBufferedFile.java?rev=1905732&r1=1905731&r2=1905732&view=diff
==============================================================================
--- pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBufferedFile.java (original)
+++ pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBufferedFile.java Sun Dec  4 12:16:51 2022
@@ -232,14 +232,18 @@ public class RandomAccessReadBufferedFil
     public void close() throws IOException
     {
         Map<String, ThreadLocalRandomAccessRead> map = randomAccessFiles.get();
-        ThreadLocalRandomAccessRead tlRandomAccessRead = map.get(file.toString());
+        ThreadLocalRandomAccessRead tlRandomAccessRead = //
+                map != null ? map.get(file.toString()) : null;
         if (tlRandomAccessRead != null)
         {
             tlRandomAccessRead.removeClosedViews();
         }
         if (tlRandomAccessRead == null || tlRandomAccessRead.allViewsClosed())
         {
-            map.remove(file.toString());
+            if (map != null)
+            {
+                map.remove(file.toString());
+            }
             fileChannel.close();
             pageCache.clear();
             isClosed = true;
@@ -275,6 +279,11 @@ public class RandomAccessReadBufferedFil
     {
         checkClosed();
         Map<String, ThreadLocalRandomAccessRead> mapRandomAccessRead = randomAccessFiles.get();
+        if (mapRandomAccessRead == null)
+        {
+            mapRandomAccessRead = new ConcurrentHashMap<>(1);
+            randomAccessFiles.set(mapRandomAccessRead);
+        }
         ThreadLocalRandomAccessRead tlRandomAccessRead = mapRandomAccessRead.get(file.toString());
         boolean newlyCreated = false;
         if (tlRandomAccessRead == null || tlRandomAccessRead.getRandomAccessRead().isClosed())