diff.c: plug a memory leak in an error path
[gitweb.git] / tree-diff.c
index 9f67af6c1fbb9130962cd373d8e2ebecf543c640..edd83949bf0896bedff4cab8e2b037eba574a45e 100644 (file)
@@ -118,10 +118,16 @@ static int tree_entry_interesting(struct tree_desc *desc, const char *base, int
                                continue;
 
                        /*
-                        * The base is a subdirectory of a path which
-                        * was specified, so all of them are interesting.
+                        * If the base is a subdirectory of a path which
+                        * was specified, all of them are interesting.
                         */
-                       return 2;
+                       if (!matchlen ||
+                           base[matchlen] == '/' ||
+                           match[matchlen - 1] == '/')
+                               return 2;
+
+                       /* Just a random prefix match */
+                       continue;
                }
 
                /* Does the base match? */
@@ -368,7 +374,7 @@ static void try_to_follow_renames(struct tree_desc *t1, struct tree_desc *t2, co
        }
 
        /*
-        * Then, discard all the non-relevane file pairs...
+        * Then, discard all the non-relevant file pairs...
         */
        for (i = 0; i < q->nr; i++) {
                struct diff_filepair *p = q->queue[i];