threads / patch / 8657

patch: tree-walk.h: Warning fix

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

## tl;dr

3 messages between Jun 20, 2007 and Jun 24, 2007. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Luiz Fernando N. Capitulino· Jun 20, 2007, 02:11 UTC · lore

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>
Show changes to tree-walk.h +1 −1
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· Jun 23, 2007, 06:19 UTC · re: Luiz Fernando N. Capitulino · lore

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

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

Show 13 quoted lines
> 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· Jun 24, 2007, 02:10 UTC · re: Junio C Hamano · lore

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

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.

← back to recent threads