Bug 512739 - ArithmeticException during "Updating Java index"

Change-Id: I70f87098312fef34e04d4894a63610ab61b415df
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java
index 3b802ce..cb7ddf1 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java
@@ -248,13 +248,14 @@
 			FingerprintTestResult nextFingerprint = fingerprints.get(next);
 			totalSizeToIndex += nextFingerprint.getNewFingerprint().getSize();
 		}
-		long tickDenominator = totalSizeToIndex / TOTAL_TICKS_TO_REPORT_DURING_INDEXING;
+		double tickCoefficient = totalSizeToIndex == 0 ? 0.0
+				: (double) TOTAL_TICKS_TO_REPORT_DURING_INDEXING / (double) totalSizeToIndex;
 
 		int classesIndexed = 0;
 		SubMonitor loopMonitor = subMonitor.split(94).setWorkRemaining(TOTAL_TICKS_TO_REPORT_DURING_INDEXING);
 		for (IPath next : indexablesWithChanges) {
 			FingerprintTestResult nextFingerprint = fingerprints.get(next);
-			int ticks = (int) (nextFingerprint.getNewFingerprint().getSize() / tickDenominator);
+			int ticks = (int) (nextFingerprint.getNewFingerprint().getSize() * tickCoefficient);
 
 			classesIndexed += rescanArchive(currentTimeMs, next, snapshot.get(next),
 					fingerprints.get(next).getNewFingerprint(), loopMonitor.split(ticks));