diff options
5 files changed, 39 insertions, 16 deletions
diff --git a/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs index 32de0e9ce3..4e28e0b26b 100644 --- a/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs +++ b/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs @@ -71,7 +71,7 @@ org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=error org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java index 83aa8fa4de..f139afc00b 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java @@ -478,6 +478,7 @@ public class DirCacheTree { // The entry is contained in this subtree. // + assert(st != null); st.validate(cache, cCnt, cIdx, pathOff + st.nameLength() + 1); cIdx += st.entrySpan; entrySpan += st.entrySpan; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java index 75b0646ed0..96f1d542ca 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java @@ -533,7 +533,6 @@ public final class DfsPackFile { return ByteBuffer.wrap(copyBuf, 0, bs); } - @SuppressWarnings("null") void copyAsIs(PackOutputStream out, DfsObjectToPack src, boolean validate, DfsReader ctx) throws IOException, StoredObjectRepresentationNotAvailableException { @@ -567,22 +566,26 @@ public final class DfsPackFile { c = buf[headerCnt++] & 0xff; } while ((c & 128) != 0); if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, headerCnt); crc2.update(buf, 0, headerCnt); } } else if (typeCode == Constants.OBJ_REF_DELTA) { if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, headerCnt); crc2.update(buf, 0, headerCnt); } readFully(src.offset + headerCnt, buf, 0, 20, ctx); if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, 20); crc2.update(buf, 0, 20); } headerCnt += 20; } else if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, headerCnt); crc2.update(buf, 0, headerCnt); } @@ -599,6 +602,7 @@ public final class DfsPackFile { quickCopy = ctx.quickCopy(this, dataOffset, dataLength); if (validate && idx(ctx).hasCRC32Support()) { + assert(crc1 != null); // Index has the CRC32 code cached, validate the object. // expectedCRC = idx(ctx).findCRC32(src); @@ -622,6 +626,7 @@ public final class DfsPackFile { Long.valueOf(src.offset), getPackName())); } } else if (validate) { + assert(crc1 != null); // We don't have a CRC32 code in the index, so compute it // now while inflating the raw data to get zlib to tell us // whether or not the data is safe. @@ -709,16 +714,21 @@ public final class DfsPackFile { while (cnt > 0) { final int n = (int) Math.min(cnt, buf.length); readFully(pos, buf, 0, n, ctx); - if (validate) + if (validate) { + assert(crc2 != null); crc2.update(buf, 0, n); + } out.write(buf, 0, n); pos += n; cnt -= n; } - if (validate && crc2.getValue() != expectedCRC) { - throw new CorruptObjectException(MessageFormat.format( - JGitText.get().objectAtHasBadZlibStream, - Long.valueOf(src.offset), getPackName())); + if (validate) { + assert(crc2 != null); + if (crc2.getValue() != expectedCRC) { + throw new CorruptObjectException(MessageFormat.format( + JGitText.get().objectAtHasBadZlibStream, + Long.valueOf(src.offset), getPackName())); + } } } } @@ -837,7 +847,6 @@ public final class DfsPackFile { return buf.position(); } - @SuppressWarnings("null") ObjectLoader load(DfsReader ctx, long pos) throws IOException { try { @@ -934,6 +943,7 @@ public final class DfsPackFile { if (data == null) throw new LargeObjectException(); + assert(delta != null); do { // Cache only the base immediately before desired object. if (cached) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java index b29966eace..589a811735 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java @@ -366,7 +366,6 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { } } - @SuppressWarnings("null") private void copyAsIs2(PackOutputStream out, LocalObjectToPack src, boolean validate, WindowCursor curs) throws IOException, StoredObjectRepresentationNotAvailableException { @@ -393,22 +392,26 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { c = buf[headerCnt++] & 0xff; } while ((c & 128) != 0); if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, headerCnt); crc2.update(buf, 0, headerCnt); } } else if (typeCode == Constants.OBJ_REF_DELTA) { if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, headerCnt); crc2.update(buf, 0, headerCnt); } readFully(src.offset + headerCnt, buf, 0, 20, curs); if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, 20); crc2.update(buf, 0, 20); } headerCnt += 20; } else if (validate) { + assert(crc1 != null && crc2 != null); crc1.update(buf, 0, headerCnt); crc2.update(buf, 0, headerCnt); } @@ -425,6 +428,7 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { quickCopy = curs.quickCopy(this, dataOffset, dataLength); if (validate && idx().hasCRC32Support()) { + assert(crc1 != null); // Index has the CRC32 code cached, validate the object. // expectedCRC = idx().findCRC32(src); @@ -457,6 +461,7 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { if (quickCopy != null) { quickCopy.check(inf, tmp, dataOffset, (int) dataLength); } else { + assert(crc1 != null); long pos = dataOffset; long cnt = dataLength; while (cnt > 0) { @@ -476,6 +481,7 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { JGitText.get().shortCompressedStreamAt, Long.valueOf(src.offset))); } + assert(crc1 != null); expectedCRC = crc1.getValue(); } else { expectedCRC = -1; @@ -535,16 +541,21 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { while (cnt > 0) { final int n = (int) Math.min(cnt, buf.length); readFully(pos, buf, 0, n, curs); - if (validate) + if (validate) { + assert(crc2 != null); crc2.update(buf, 0, n); + } out.write(buf, 0, n); pos += n; cnt -= n; } - if (validate && crc2.getValue() != expectedCRC) { - throw new CorruptObjectException(MessageFormat.format( - JGitText.get().objectAtHasBadZlibStream, - Long.valueOf(src.offset), getPackFile())); + if (validate) { + assert(crc2 != null); + if (crc2.getValue() != expectedCRC) { + throw new CorruptObjectException(MessageFormat.format( + JGitText.get().objectAtHasBadZlibStream, + Long.valueOf(src.offset), getPackFile())); + } } } } @@ -712,7 +723,6 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { , getPackFile())); } - @SuppressWarnings("null") ObjectLoader load(final WindowCursor curs, long pos) throws IOException, LargeObjectException { try { @@ -811,6 +821,7 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> { if (data == null) throw new IOException(JGitText.get().inMemoryBufferLimitExceeded); + assert(delta != null); do { // Cache only the base immediately before desired object. if (cached) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java index 6d6d0cabd0..c7b60882a2 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java @@ -881,7 +881,6 @@ public class RefDirectory extends RefDatabase { return n; } - @SuppressWarnings("null") private LooseRef scanRef(LooseRef ref, String name) throws IOException { final File path = fileFor(name); FileSnapshot currentSnapshot = null; @@ -920,6 +919,7 @@ public class RefDirectory extends RefDatabase { final String target = RawParseUtils.decode(buf, 5, n); if (ref != null && ref.isSymbolic() && ref.getTarget().getName().equals(target)) { + assert(currentSnapshot != null); currentSnapshot.setClean(otherSnapshot); return ref; } @@ -934,6 +934,7 @@ public class RefDirectory extends RefDatabase { id = ObjectId.fromString(buf, 0); if (ref != null && !ref.isSymbolic() && ref.getTarget().getObjectId().equals(id)) { + assert(currentSnapshot != null); currentSnapshot.setClean(otherSnapshot); return ref; } |