Commit Diff


commit - 6bad629b50d093da48f6347e1dd806d56bf05a1e
commit + 554b91b15a7cc9f7b1e6946d04eb54a5dd2f2232
blob - 0c72541adc1a32c762db1dc80b554e6cc37cc2b0
blob + 9923cab764ea6af6bd40df02195db5ae2d4241b1
--- lib/fileindex.c
+++ lib/fileindex.c
@@ -830,8 +830,22 @@ diff_fileindex_dir(struct got_fileindex *fileindex,
 				err = walk_dir(&dle, fileindex, ie, dle, path,
 				    dir, repo, cb, cb_arg);
 			}
+			if (err)
+				break;
+		} else if (*ie) {
+			next = walk_fileindex(fileindex, *ie);
+			err = cb->diff_old(cb_arg, *ie, path);
+			if (err)
+				break;
+			*ie = next;
+		} else if (dle) {
+			err = cb->diff_new(cb_arg, dle->de, path);
 			if (err)
 				break;
+			err = walk_dir(&dle, fileindex, ie, dle, path, dir,
+			    repo, cb, cb_arg);
+			if (err)
+				break;
 		}
 	}