# [PATCH]: tree-walk.h: Warning fix

3 messages from 2007-06-20 to 2007-06-24. Participants: Luiz Fernando N. Capitulino, Junio C Hamano.
Thread: https://gitlist.dev/t/8657

## Luiz Fernando N. Capitulino, 2007-06-20 02:11

Subject: [PATCH]: tree-walk.h: Warning fix
Message-ID: <20070619231127.7ffe273b@gnut>
URL: https://gitlist.dev/e/20070619231127.7ffe273b%40gnut

```

Code that is using libgit.a, and hence including GIT's headers, may
get this warning:

"""
../tree-walk.h: In function 'tree_entry_len':
../tree-walk.h:25: warning: cast discards qualifiers from pointer target type
../tree-walk.h:25: warning: cast discards qualifiers from pointer target type
"""

This happens because the cast used in tree_entry_len() is discarding
the const qualifier (thanks to Shawn Pearce by noticing this).

Signed-off-by: Luiz Fernando N. Capitulino <lcapitulino@gmail.com>

diff --git a/tree-walk.h b/tree-walk.h
index ee747ab..625198f 100644
--- a/tree-walk.h
+++ b/tree-walk.h
@@ -22,7 +22,7 @@ static inline const unsigned char *tree_entry_extract(struct tree_desc *desc, co
 
 static inline int tree_entry_len(const char *name, const unsigned char *sha1)
 {
-	return (char *)sha1 - (char *)name - 1;
+	return (const char *)sha1 - (const char *)name - 1;
 }
 
 void update_tree_entry(struct tree_desc *);

```

## Junio C Hamano, 2007-06-23 06:19

Subject: Re: [PATCH]: tree-walk.h: Warning fix
Message-ID: <7v1wg39oqc.fsf@assigned-by-dhcp.pobox.com>
URL: https://gitlist.dev/e/7v1wg39oqc.fsf%40assigned-by-dhcp.pobox.com
In-Reply-To: <20070619231127.7ffe273b@gnut>

```
"Luiz Fernando N. Capitulino" <lcapitulino@mandriva.com.br>
writes:

> diff --git a/tree-walk.h b/tree-walk.h
> index ee747ab..625198f 100644
> --- a/tree-walk.h
> +++ b/tree-walk.h
> @@ -22,7 +22,7 @@ static inline const unsigned char *tree_entry_extract(struct tree_desc *desc, co
>  
>  static inline int tree_entry_len(const char *name, const unsigned char *sha1)
>  {
> -	return (char *)sha1 - (char *)name - 1;
> +	return (const char *)sha1 - (const char *)name - 1;
>  }
>  
>  void update_tree_entry(struct tree_desc *);

Grumble.  Incoming "name" is already (const char*), isn't it?
I'd cast only the sha1 side and apply.

However, I think -Wcast-qual is a pretty useless option.  

The nastiest one, if you care, is exec_cmd.c::execv_git_cmd()
where we never muck with "const char **argv" ourselves, but we
have to call execve(), which takes (char**) as its second
parameter.  We cast away constness for that call; otherwise you
would then get prototype mismatch.

```

## Luiz Fernando N. Capitulino, 2007-06-24 02:10

Subject: Re: [PATCH]: tree-walk.h: Warning fix
Message-ID: <20070623231021.40a6f3be@gnut>
URL: https://gitlist.dev/e/20070623231021.40a6f3be%40gnut
In-Reply-To: <7v1wg39oqc.fsf@assigned-by-dhcp.pobox.com>

```
Em Fri, 22 Jun 2007 23:19:55 -0700
Junio C Hamano <gitster@pobox.com> escreveu:

| "Luiz Fernando N. Capitulino" <lcapitulino@mandriva.com.br>
| writes:
| 
| > diff --git a/tree-walk.h b/tree-walk.h
| > index ee747ab..625198f 100644
| > --- a/tree-walk.h
| > +++ b/tree-walk.h
| > @@ -22,7 +22,7 @@ static inline const unsigned char *tree_entry_extract(struct tree_desc *desc, co
| >  
| >  static inline int tree_entry_len(const char *name, const unsigned char *sha1)
| >  {
| > -	return (char *)sha1 - (char *)name - 1;
| > +	return (const char *)sha1 - (const char *)name - 1;
| >  }
| >  
| >  void update_tree_entry(struct tree_desc *);
| 
| Grumble.  Incoming "name" is already (const char*), isn't it?
| I'd cast only the sha1 side and apply.

 Yes, you're right. I'll fix it and apply again.

 Thanks a lot for the feedback.

```
