difftool's dir-diff should never reuse a symlink, regardless of
what it points to.  Tighten use_wt_file() so that it rejects all
symlinks.

Helped-by: Junio C Hamano <gits...@pobox.com>
Signed-off-by: David Aguilar <dav...@gmail.com>
---
 git-difftool.perl | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/git-difftool.perl b/git-difftool.perl
index 1abe647..873db57 100755
--- a/git-difftool.perl
+++ b/git-difftool.perl
@@ -70,13 +70,13 @@ sub use_wt_file
        my ($repo, $workdir, $file, $sha1) = @_;
        my $null_sha1 = '0' x 40;
 
-       if (! -f "$workdir/$file") {
-               return (0, $null_sha1);
+       my $workfile = "$workdir/$file";
+       if (-f $workfile && ! -l $workfile) {
+               my $wt_sha1 = $repo->command_oneline('hash-object', $workfile);
+               my $use = ($sha1 eq $null_sha1) || ($sha1 eq $wt_sha1);
+               return ($use, $wt_sha1);
        }
-
-       my $wt_sha1 = $repo->command_oneline('hash-object', "$workdir/$file");
-       my $use = ($sha1 eq $null_sha1) || ($sha1 eq $wt_sha1);
-       return ($use, $wt_sha1);
+       return (0, $null_sha1);
 }
 
 sub changed_files
-- 
2.6.2.282.gfefd36e

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to