From 9ba463435b73b741b3a028589daf6372985eb8e2 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Wed, 2 Mar 2005 09:51:54 +0000 Subject: [PATCH] If the multi-dest loop falls back to the best_match index, we need to re-stat() the file to restore "st". --- generator.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/generator.c b/generator.c index bd8a672e..788e2e6a 100644 --- a/generator.c +++ b/generator.c @@ -844,10 +844,15 @@ static void recv_generator(char *fname, struct file_list *flist, break; } while (basis_dir[++i] != NULL); if (match_level) { + statret = 0; if (i != best_match) { i = best_match; pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, basis_dir[i], fname); + if (link_stat(fnamecmpbuf, &st, 0) < 0) { + match_level = 0; + statret = -1; + } } #ifdef HAVE_LINK if (link_dest && match_level == 3 && !dry_run) { @@ -863,11 +868,10 @@ static void recv_generator(char *fname, struct file_list *flist, } } else #endif - { + if (statret == 0) { fnamecmp = fnamecmpbuf; fnamecmp_type = i; } - statret = 0; } } -- 2.34.1