Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jun 2001 12:47:30 -0500
From:      "Jacques A. Vidrine" <n@nectar.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Peter Pentchev <roam@orbitel.bg>, hackers@FreeBSD.org
Subject:   Re: free() and const warnings
Message-ID:  <20010607124729.B4940@shade.nectar.com>
In-Reply-To: <XFMail.010607102051.jhb@FreeBSD.org>; from jhb@FreeBSD.org on Thu, Jun 07, 2001 at 10:20:51AM -0700
References:  <20010607195634.I724@ringworld.oblivion.bg> <XFMail.010607102051.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jun 07, 2001 at 10:20:51AM -0700, John Baldwin wrote:
> 
> On 07-Jun-01 Peter Pentchev wrote:
> > On Thu, Jun 07, 2001 at 07:07:22PM +0300, Peter Pentchev wrote:
> >> Hi,
> >> 
> >> Is free((void *) (size_t) ptr) the only way to free a const whatever *ptr
> >> with WARNS=2?  (or more specifically, with -Wcast-qual)
> > 
> > Uhm.  OK.  So size_t may not be enough to hold a pointer.  What is it then -
> > caddr_t?
> 
> uintptr_t for data pointers.  In theory I think code pointers may not fit in a
> uintptr_t.

C99 says of uintptr_t only that for any valid pointer p, the following
is true:

    (void *)(uintptr_t)p == (void *)p

Likewise for  intptr_t.  I read  that as  covering both code  and data
pointers.

Of  course, who's  to  say the  way uintptr_t  is  implemented on  our
platform adheres to the same rules :-)


> free((void *)(uintptr_t)ptr) should work.
> 
> Of course, this begs the question of why you are free'ing a const. :)

Indeed!

Cheers,
-- 
Jacques Vidrine / n@nectar.com / jvidrine@verio.net / nectar@FreeBSD.org

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?20010607124729.B4940>