Sfoglia il codice sorgente

Initialize 'pathLen' field also for empty directories

Bug: 445363
Change-Id: Ia8428af84fb61ba0d572374a19e8e8c55b138a63
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
tags/v3.6.0.201411121045-m1
Andrey Loskutov 9 anni fa
parent
commit
4ea8c655d6

+ 37
- 0
org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java Vedi File

@@ -144,6 +144,43 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
assertTrue(fti.eof());
}

@Test
public void testEmptyIteratorOnEmptyDirectory() throws Exception {
String nonExistingFileName = "not-existing-file";
final File r = new File(trash, nonExistingFileName);
assertFalse(r.exists());
FileUtils.mkdir(r);

final FileTreeIterator parent = new FileTreeIterator(db);

while (!parent.getEntryPathString().equals(nonExistingFileName))
parent.next(1);

final FileTreeIterator childIter = new FileTreeIterator(parent, r,
db.getFS());
assertTrue(childIter.first());
assertTrue(childIter.eof());

String parentPath = parent.getEntryPathString();
assertEquals(nonExistingFileName, parentPath);

// must be "not-existing-file/", but getEntryPathString() was broken by
// 445363 too
String childPath = childIter.getEntryPathString();

// in bug 445363 the iterator wrote garbage to the parent "path" field
EmptyTreeIterator e = childIter.createEmptyTreeIterator();
assertNotNull(e);

// check if parent path is not overridden by empty iterator (bug 445363)
// due bug 445363 this was "/ot-existing-file" instead of
// "not-existing-file"
assertEquals(parentPath, parent.getEntryPathString());
assertEquals(parentPath + "/", childPath);
assertEquals(parentPath + "/", childIter.getEntryPathString());
assertEquals(childPath + "/", e.getEntryPathString());
}

@Test
public void testSimpleIterate() throws Exception {
final FileTreeIterator top = new FileTreeIterator(trash, db.getFS(),

+ 2
- 0
org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java Vedi File

@@ -668,6 +668,8 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
ptr = 0;
if (!eof())
parseEntry();
else if (pathLen == 0) // see bug 445363
pathLen = pathOffset;
}

/**

Loading…
Annulla
Salva