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

Previous thread: Re: how to move with history? by Jakub Narebski on Tuesday, June 19, 2007 - 6:59 pm. (1 message)

Next thread: Re: Stupid quoting... by Johannes Schindelin on Tuesday, June 19, 2007 - 10:19 pm. (13 messages)
To: <gitster@...>
Cc: <git@...>
Date: Tuesday, June 19, 2007 - 10:11 pm

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 *);
-

To: Luiz Fernando N. Capitulino <lcapitulino@...>
Cc: <git@...>
Date: Saturday, June 23, 2007 - 2:19 am

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

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.

-

To: Junio C Hamano <gitster@...>
Cc: <git@...>
Date: Saturday, June 23, 2007 - 10:10 pm

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.
-

Previous thread: Re: how to move with history? by Jakub Narebski on Tuesday, June 19, 2007 - 6:59 pm. (1 message)

Next thread: Re: Stupid quoting... by Johannes Schindelin on Tuesday, June 19, 2007 - 10:19 pm. (13 messages)