diff options
author | Russell Belfer <rb@github.com> | 2013-06-20 11:37:58 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2013-06-20 11:37:58 -0700 |
commit | 852ded96982ae70acb63c3940fae08ea29e40fee (patch) | |
tree | d1235b268e3f373eb2bd6c4e08451fbd8ce67015 | |
parent | 8b2fa181b2741661253c1d58cfa1077ade8bea24 (diff) | |
download | libgit2-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.c | 13 |
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 */ |