From d364fb2d4f17866162a206d10ff89e19be7ac8e3 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 2 Mar 2012 15:01:13 -0800 Subject: [PATCH] Remove null access warning in DirCacheCheckout Initially fill in the current DirCacheEntry field guarding against a null index tree and use that variable instead of calling getDirCacheEntry() on a possibly null DirCacheBuildIterator. Change-Id: I16f388a16636aefdb07d66dae5d05655009e2a0e --- .../jgit/dircache/DirCacheCheckout.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java index 50d4c5e4a..88741a1b8 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java @@ -508,7 +508,7 @@ private boolean equalIdAndMode(ObjectId id1, FileMode mode1, ObjectId id2, void processEntry(AbstractTreeIterator h, AbstractTreeIterator m, DirCacheBuildIterator i, WorkingTreeIterator f) throws IOException { - DirCacheEntry dce; + DirCacheEntry dce = i != null ? i.getDirCacheEntry() : null; String name = walk.getPathString(); @@ -595,7 +595,7 @@ void processEntry(AbstractTreeIterator h, AbstractTreeIterator m, switch (ffMask) { case 0xDDF: // 1 2 if (isModified(name)) { - conflict(name, i.getDirCacheEntry(), h, m); // 1 + conflict(name, dce, h, m); // 1 } else { update(name, mId, mMode); // 2 } @@ -625,41 +625,40 @@ void processEntry(AbstractTreeIterator h, AbstractTreeIterator m, break; case 0xDF0: // conflict without a rule case 0x0FD: // 15 - conflict(name, (i != null) ? i.getDirCacheEntry() : null, h, m); + conflict(name, dce, h, m); break; case 0xFDF: // 7 8 9 if (equalIdAndMode(hId, hMode, mId, mMode)) { if (isModified(name)) - conflict(name, i.getDirCacheEntry(), h, m); // 8 + conflict(name, dce, h, m); // 8 else update(name, mId, mMode); // 7 } else if (!isModified(name)) update(name, mId, mMode); // 9 else // To be confirmed - this case is not in the table. - conflict(name, i.getDirCacheEntry(), h, m); + conflict(name, dce, h, m); break; case 0xFD0: // keep without a rule - keep(i.getDirCacheEntry()); + keep(dce); break; case 0xFFD: // 12 13 14 - if (equalIdAndMode(hId, hMode, iId, iMode)) { - dce = i.getDirCacheEntry(); + if (equalIdAndMode(hId, hMode, iId, iMode)) if (f == null || f.isModified(dce, true)) conflict(name, dce, h, m); else remove(name); - } else - conflict(name, i.getDirCacheEntry(), h, m); + else + conflict(name, dce, h, m); break; case 0x0DF: // 16 17 if (!isModified(name)) update(name, mId, mMode); else - conflict(name, i.getDirCacheEntry(), h, m); + conflict(name, dce, h, m); break; default: - keep(i.getDirCacheEntry()); + keep(dce); } return; } @@ -707,7 +706,6 @@ else if (m == null) else update(name, mId, mMode); // 3 } else { - dce = i.getDirCacheEntry(); if (h == null) { /** *
@@ -747,7 +745,7 @@ else if (m == null)
 				 * 
*/ - if (dce.getFileMode() == FileMode.GITLINK) { + if (iMode == FileMode.GITLINK) { // Submodules that disappear from the checkout must // be removed from the index, but not deleted from disk. remove(name);