diff --git a/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jgit/.settings/org.eclipse.jdt.core.prefs index 32de0e9ce..4e28e0b26 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 83aa8fa4d..f139afc00 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 @@ void validate(final DirCacheEntry[] cache, final int cCnt, int cIdx, // 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 75b0646ed..96f1d542c 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 @@ private ByteBuffer newCopyBuffer(PackOutputStream out, ReadableChannel rc) { 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 @@ void copyAsIs(PackOutputStream out, DfsObjectToPack src, 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 @@ void copyAsIs(PackOutputStream out, DfsObjectToPack src, 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 @@ void copyAsIs(PackOutputStream out, DfsObjectToPack src, 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 @@ void copyAsIs(PackOutputStream out, DfsObjectToPack src, 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 @@ private static int read(ReadableChannel rc, ByteBuffer buf) return buf.position(); } - @SuppressWarnings("null") ObjectLoader load(DfsReader ctx, long pos) throws IOException { try { @@ -934,6 +943,7 @@ ObjectLoader load(DfsReader ctx, long pos) 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 b29966eac..589a81173 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 @@ final void copyAsIs(PackOutputStream out, LocalObjectToPack src, } } - @SuppressWarnings("null") private void copyAsIs2(PackOutputStream out, LocalObjectToPack src, boolean validate, WindowCursor curs) throws IOException, StoredObjectRepresentationNotAvailableException { @@ -393,22 +392,26 @@ private void copyAsIs2(PackOutputStream out, LocalObjectToPack src, 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 @@ private void copyAsIs2(PackOutputStream out, LocalObjectToPack src, 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 @@ private void copyAsIs2(PackOutputStream out, LocalObjectToPack src, 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 @@ private void copyAsIs2(PackOutputStream out, LocalObjectToPack src, JGitText.get().shortCompressedStreamAt, Long.valueOf(src.offset))); } + assert(crc1 != null); expectedCRC = crc1.getValue(); } else { expectedCRC = -1; @@ -535,16 +541,21 @@ private void copyAsIs2(PackOutputStream out, LocalObjectToPack src, 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 @@ private void onOpenPack() throws IOException { , getPackFile())); } - @SuppressWarnings("null") ObjectLoader load(final WindowCursor curs, long pos) throws IOException, LargeObjectException { try { @@ -811,6 +821,7 @@ ObjectLoader load(final WindowCursor curs, long pos) 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 6d6d0cabd..c7b60882a 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 @@ private Ref readRef(String name, RefList packed) throws IOException { 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 @@ private LooseRef scanRef(LooseRef ref, String name) throws IOException { 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 @@ private LooseRef scanRef(LooseRef ref, String name) throws IOException { id = ObjectId.fromString(buf, 0); if (ref != null && !ref.isSymbolic() && ref.getTarget().getObjectId().equals(id)) { + assert(currentSnapshot != null); currentSnapshot.setClean(otherSnapshot); return ref; }