diff options
author | Christian Halstrick <christian.halstrick@sap.com> | 2020-12-30 03:05:00 -0500 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org <gerrit@eclipse.org> | 2020-12-30 03:05:00 -0500 |
commit | 086f474054440579dece78aa3a12a3157c80b344 (patch) | |
tree | 659124e4537e89b7fb7424bcc2537d072d989c7d | |
parent | 8caaaf956a070864b8e700afc76b5ab9e8c12f36 (diff) | |
parent | aa3a1ecd133628c4d9d211d2b227f96b5c3d9d8f (diff) | |
download | jgit-086f474054440579dece78aa3a12a3157c80b344.tar.gz jgit-086f474054440579dece78aa3a12a3157c80b344.zip |
Merge "Added check for null on DirCacheEntry in checkoutEntry method"
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java | 9 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java | 8 |
2 files changed, 15 insertions, 2 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java index b943486b1b..9dfceae345 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java @@ -13,6 +13,7 @@ package org.eclipse.jgit.lib; import static java.nio.charset.StandardCharsets.UTF_8; +import static org.eclipse.jgit.dircache.DirCacheCheckout.checkoutEntry; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -47,6 +48,7 @@ import org.eclipse.jgit.errors.CorruptObjectException; import org.eclipse.jgit.errors.NoWorkTreeException; import org.eclipse.jgit.events.ChangeRecorder; import org.eclipse.jgit.events.ListenerHandle; +import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.TestRepository.BranchBuilder; @@ -2146,4 +2148,11 @@ public class DirCacheCheckoutTest extends RepositoryTestCase { assertEquals("WorkDir has not the right size.", i.size(), nrFiles); } } + + @Test + public void shouldReturnAndNotThrowNPEWhenCheckoutEntryIsCalledWithNullEntry() throws Exception{ + checkoutEntry(new InMemoryRepository(null), null, null, true, new CheckoutMetadata(null, null)); + } + + } 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 8c51a7ac2f..344626de37 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java @@ -1214,9 +1214,10 @@ public class DirCacheCheckout { private void keep(String path, DirCacheEntry e, WorkingTreeIterator f) throws IOException { - if (e != null && !FileMode.TREE.equals(e.getFileMode())) + if (e != null && !FileMode.TREE.equals(e.getFileMode())) { builder.add(e); - if (force) { + } + if (e != null && force) { if (f == null || f.isModified(e, true, walk.getObjectReader())) { kept.add(path); checkoutEntry(repo, e, walk.getObjectReader(), false, @@ -1447,6 +1448,9 @@ public class DirCacheCheckout { public static void checkoutEntry(Repository repo, DirCacheEntry entry, ObjectReader or, boolean deleteRecursive, CheckoutMetadata checkoutMetadata) throws IOException { + if (entry == null) { + return; + } if (checkoutMetadata == null) checkoutMetadata = CheckoutMetadata.EMPTY; ObjectLoader ol = or.open(entry.getObjectId()); |