# [PATCH] builtin-apply.c: do not set bogus mode in check_preimage() for deleted path

2 messages from 2009-01-28 to 2009-01-29. Participants: Junio C Hamano, Don Zickus.
Thread: https://gitlist.dev/t/17423

## Junio C Hamano, 2009-01-28 23:27

Subject: [PATCH] builtin-apply.c: do not set bogus mode in check_preimage() for deleted path
Message-ID: <7vocxrj9j9.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vocxrj9j9.fsf%40gitster.siamese.dyndns.org

```
If it is deleted, it is deleted.  Do not set the current mode to it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * This updates 1f7903a (builtin-apply: prevent non-explicit permission
   changes, 2009-01-02).  It should not change the behaviour in the normal
   case, because we do not explicitly check the final mode of a deletion
   patch.  We do check the deletion patch creates an empty result, and we
   might want to fix that someday, and at that point the existing code
   will break.

   Also I suspect this codepath has been broken the use case 7a07841
   (git-apply: handle a patch that touches the same path more than once
   better, 2008-06-27) wanted to support, and if that is the case, this
   would fix it.

 builtin-apply.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin-apply.c b/builtin-apply.c
index b415daf..1e7f917 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -2453,7 +2453,7 @@ static int check_preimage(struct patch *patch, struct cache_entry **ce, struct s
 	if (st_mode != patch->old_mode)
 		fprintf(stderr, "warning: %s has type %o, expected %o\n",
 			old_name, st_mode, patch->old_mode);
-	if (!patch->new_mode)
+	if (!patch->new_mode && !patch->is_delete)
 		patch->new_mode = st_mode;
 	return 0;
 
-- 
1.6.1.1.278.g6a817

```

## Don Zickus, 2009-01-29 01:46

Subject: Re: [PATCH] builtin-apply.c: do not set bogus mode in check_preimage() for deleted path
Message-ID: <20090129014620.GE13271@redhat.com>
URL: https://gitlist.dev/e/20090129014620.GE13271%40redhat.com
In-Reply-To: <7vocxrj9j9.fsf@gitster.siamese.dyndns.org>

```
On Wed, Jan 28, 2009 at 03:27:54PM -0800, Junio C Hamano wrote:
>    Also I suspect this codepath has been broken the use case 7a07841
>    (git-apply: handle a patch that touches the same path more than once
>    better, 2008-06-27) wanted to support, and if that is the case, this
>    would fix it.

Actually deleting patches weren't that interesting to me, I deal more with
patches modifying the same patch repeatedly.  Regardless the patch below
seems ok to me.

Acked-by: Don Zickus <dzickus@redhat.com>

> 
>  builtin-apply.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/builtin-apply.c b/builtin-apply.c
> index b415daf..1e7f917 100644
> --- a/builtin-apply.c
> +++ b/builtin-apply.c
> @@ -2453,7 +2453,7 @@ static int check_preimage(struct patch *patch, struct cache_entry **ce, struct s
>  	if (st_mode != patch->old_mode)
>  		fprintf(stderr, "warning: %s has type %o, expected %o\n",
>  			old_name, st_mode, patch->old_mode);
> -	if (!patch->new_mode)
> +	if (!patch->new_mode && !patch->is_delete)
>  		patch->new_mode = st_mode;
>  	return 0;
>  
> -- 
> 1.6.1.1.278.g6a817
> 

```
