[JGIT PATCH 01/10] Safely handle closing an already closed WindowedFile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If cacheOpen throws an exception (e.g. FileNotFoundException) we
may wind up in cacheClose, where the fd is null because we didn't
successfully construct the RandomAccessFile.  In such cases there
is nothing to attempt to close.

Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx>
---
 .../src/org/spearce/jgit/lib/WindowedFile.java     |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowedFile.java b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowedFile.java
index 938f44c..9293eb9 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowedFile.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowedFile.java
@@ -297,14 +297,16 @@ void cacheOpen() throws IOException {
 	}
 
 	void cacheClose() {
-		try {
-			fd.close();
-		} catch (IOException err) {
-			// Ignore a close event. We had it open only for reading.
-			// There should not be errors related to network buffers
-			// not flushed, etc.
+		if (fd != null) {
+			try {
+				fd.close();
+			} catch (IOException err) {
+				// Ignore a close event. We had it open only for reading.
+				// There should not be errors related to network buffers
+				// not flushed, etc.
+			}
+			fd = null;
 		}
-		fd = null;
 	}
 
 	void allocWindow(final WindowCursor curs, final int windowId,
-- 
1.6.3.rc1.188.ga02b

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]