Messages in this thread | | | From | Johannes Weiner <> | Subject | Re: Why is the kfree() argument const? | Date | Thu, 17 Jan 2008 00:13:04 +0100 |
| |
Hi,
Christoph Lameter <clameter@sgi.com> writes:
> On Wed, 16 Jan 2008, Johannes Weiner wrote: > >> So if I got it right and you actually modify the memory you only got a >> const pointer to, you reach a level where you _have to_ break this >> policy and cast to a non-const pointer, as it is currently done in >> kfree(). No? > > Correct and we have gcc 4.2 currently spitting out warnings because of > casting to non const. Any idea how to convince gcc that this is okay?
Just for the record, this really seems to be a gcc bug, I can not explain this otherwise:
$ cat test.c #include <stdio.h>
static void test(void *p) { char *v = p; puts(v); }
int main(void) { const char foo[] = "foo"; test((void *)foo); return 0; } $ gcc -Wall test.c -o test $ gcc -Wall -O test.c -o test test.c: In function 'main': test.c:12: warning: passing argument 1 of 'test' discards qualifiers from pointer target type $ gcc -Wall -O -fno-inline test.c -o test $
gcc is version 4.2.2.
Hannes
| |