]> source.dussan.org Git - jgit.git/commitdiff
Fixed potential div by zero bug 92/1092/2
authorJeff Schumacher <jeffschu@google.com>
Fri, 9 Jul 2010 19:53:57 +0000 (12:53 -0700)
committerJeff Schumacher <jeffschu@google.com>
Mon, 12 Jul 2010 19:24:42 +0000 (12:24 -0700)
The scoring logic in SimilarityIndex was dividing by the max file
size. If both files are empty, this would cause a div by zero
error. This case cannot currently happen, since two empty files
would have the same SHA1, and would therefore be caught in the
earlier SHA1 based detection pass. Still, if this logic eventually
gets separated from that pass, a div by zero error would occur.

I changed the logic to instead consider two empty files to have a
similarity score of 100.

Change-Id: Ic08e18a066b8fef25bb5e7c62418106a8cee762a

org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityIndex.java

index d6026b5be21b231beaeec04962a87bae5fbfcf4a..f4cccfc37d75181ccfa0adb089b0b2c09e016ac4 100644 (file)
@@ -144,6 +144,8 @@ class SimilarityIndex {
 
        int score(SimilarityIndex dst) {
                long max = Math.max(fileSize, dst.fileSize);
+               if (max == 0)
+                       return 100;
                return (int) ((common(dst) * 100L) / max);
        }