Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Jun 2001 15:55:28 +0300
From:      Peter Pentchev <roam@orbitel.bg>
To:        Thomas David Rivers <rivers@dignus.com>
Cc:        hackers@FreeBSD.ORG, jhb@FreeBSD.ORG
Subject:   Re: free() and const warnings
Message-ID:  <20010608155527.D7671@ringworld.oblivion.bg>
In-Reply-To: <200106081251.IAA49852@lakes.dignus.com>; from rivers@dignus.com on Fri, Jun 08, 2001 at 08:51:54AM -0400
References:  <20010608154249.A7671@ringworld.oblivion.bg> <200106081251.IAA49852@lakes.dignus.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jun 08, 2001 at 08:51:54AM -0400, Thomas David Rivers wrote:
> > 
> > GCC complains when I try to initialize the structure with something like:
> > 
> > struct validation_fun	val_init[] = {
> > 	{"init",	valfun_init,	0}
> > };
> > 
> > This can be avoided by:
> > 
> > struct validation_fun	val_init[] = {
> > 	{(char *) (uintptr_t) "init",	valfun_init,	0}
> > };
> > 
> > ..but as a matter of fact, static, pre-initialized valfun structs are
> > the rule rather than the exception in this program, so having this
> > syntax for all of them seems.. well.. ugly :)
> > 
> 
>  Ah..   I see..
> 
>  (I don't think you need (uintptr_t) - you can cast a (const char *)
>   to a (char *) without having to go "through" that - I believe.)

Errrr.. this was the whole point of this thread.  I *can't* cast
a (const char *) to a (char *) when using the -Wcast-qual gcc flag -
the -Wcast-qual flag produces exactly this type of warnings, to make
sure you don't treat const * pointers as normal pointers, and pass them
to functions that do stupid things like modify them or free them :)

>  Is this C, or C++.. there are some differences in the type of
>  a constant character string between the two...
> 
>  But - basically, what you are trying to describe is a field which
>  is sometimes 'const' and othertimes isn't... which doesn't make 
>  sense in the context of the C standard...  you'll need a cast
>  for the initialization, or some other approach besides static
>  initialization I believe... (or, just "live" with the warning...
>  which isn't pleasant at all.)

Well, I can't live with the warning with -Werror ;)  So I guess I'll
live with casting in free() :)

G'luck,
Peter

-- 
If wishes were fishes, the antecedent of this conditional would be true.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010608155527.D7671>