Sync with trunk for NPOIFS

git-svn-id: https://svn.apache.org/repos/asf/poi/branches/NIO_32_BRANCH@1055380 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java
index 8a7b683..58d77be 100644
--- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java
+++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java
@@ -183,6 +183,14 @@
              channel.close();
           }
           throw e;
+       } catch(RuntimeException e) {
+          // Comes from Iterators etc.
+          // TODO Decide if we can handle these better whilst
+          //  still sticking to the iterator contract
+          if(closeChannelOnError) {
+             channel.close();
+          }
+          throw e;
        }
     }