From 6722f25d565c1acefefb232a45e690507bcd457a Mon Sep 17 00:00:00 2001 From: Anna Papitto Date: Mon, 19 Dec 2022 16:20:14 -0800 Subject: [PATCH] PackWriter#prepareBitmapIndex: add clarifying comments New readers of #prepareBitmapIndex may be confused about the manual memory management (hidden mutation and nulling out pointers). Add two clarifying comments to help future readers. Change-Id: I93cab1919066efda37e96c47667f6991f67e377e --- .../org/eclipse/jgit/internal/storage/pack/PackWriter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java index 8653c3228..d42d348a1 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java @@ -2371,10 +2371,14 @@ public boolean prepareBitmapIndex(ProgressMonitor pm) throws IOException { int numCommits = objectsLists[OBJ_COMMIT].size(); List byName = sortByName(); + // Reset sortedByName before the array that it points to is mutated by + // PackBitmapIndexBuilder, to prevent other methods referencing the + // mutated array afterwards. sortedByName = null; objectsLists = null; objectsMap = null; writeBitmaps = new PackBitmapIndexBuilder(byName); + // Allow byName to be GC'd if JVM GC runs before the end of the method. byName = null; PackWriterBitmapPreparer bitmapPreparer = new PackWriterBitmapPreparer(