--- src/org/apache/xml/utils/XMLReaderManager.java.orig	2010-10-12 12:53:08.263175752 -0400
+++ src/org/apache/xml/utils/XMLReaderManager.java	2010-10-12 12:57:57.362354719 -0400
@@ -152,10 +152,16 @@
      * @param reader The XMLReader that's being released.
      */
     public synchronized void releaseXMLReader(XMLReader reader) {
+        // To avoid NullPointerException if reader is null
+        if (reader == null) {
+            return;
+        } 
         // If the reader that's being released is the cached reader
-        // for this thread, remove it from the m_isUse list.
-        if (m_readers.get() == reader && reader != null) {
-            m_inUse.remove(reader);
+        // for this thread, mark it as no longer being in use.
+        if (m_readers.get() == reader) {
+           m_readers.set(null);
+           m_inUse.put(reader, Boolean.FALSE);
         }
+        m_inUse.remove(reader); 
     }
 }
