summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-06-20 11:37:58 -0700
committerRussell Belfer <rb@github.com>2013-06-20 11:37:58 -0700
commit852ded96982ae70acb63c3940fae08ea29e40fee (patch)
treed1235b268e3f373eb2bd6c4e08451fbd8ce67015
parent8b2fa181b2741661253c1d58cfa1077ade8bea24 (diff)
downloadlibgit2-852ded96982ae70acb63c3940fae08ea29e40fee.tar.gz
Fix bug in diff untracked dir scan
When scanning untracked directories looking for non-ignored files there was a bug where an empty directory would generate a false error.
-rw-r--r--src/diff.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/diff.c b/src/diff.c
index 633601699..3846a5e1b 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -786,10 +786,15 @@ static int diff_scan_inside_untracked_dir(
/* need to recurse into non-ignored directories */
if (!is_ignored && S_ISDIR(info->nitem->mode)) {
- if ((error = git_iterator_advance_into(
- &info->nitem, info->new_iter)) < 0)
- break;
- continue;
+ error = git_iterator_advance_into(&info->nitem, info->new_iter);
+
+ if (!error)
+ continue;
+ else if (error == GIT_ENOTFOUND) {
+ error = 0;
+ is_ignored = true; /* treat empty as ignored */
+ } else
+ break; /* real error, must stop */
}
/* found a non-ignored item - treat parent dir as untracked */