diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-09-25 12:36:36 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:59:14 -0500 |
commit | 797d80879c89cedce5992ec4a67b61d2711421a7 (patch) | |
tree | b3ece4bcc06782ef3b1434637515a66de3ad84a0 /source4 | |
parent | 48c97988ca6703264721c6be435e6f616cdbdcb6 (diff) | |
download | samba-797d80879c89cedce5992ec4a67b61d2711421a7.tar.gz samba-797d80879c89cedce5992ec4a67b61d2711421a7.tar.bz2 samba-797d80879c89cedce5992ec4a67b61d2711421a7.zip |
r2632: a new approach to handling const errors. We have had huge numbers of
const warnings for a long time, and no real way to approach a
solution. Some of them are unavoidable due to the way the C standard
works (for example, any function that provides strchr() like
functionality _must_ produce a const warning)
I will be converting a bunch of places that currently produce const
warnings to use the discard_const_p(). Some of these will be
unavoidable const problems, some of them will be ones we will fix up
over time. At least this change means we will no longer be swamped
with const warnings, and we will easily be able to see when new
problems emerge.
(This used to be commit fec3288ad6ce58e8273e3f16e88037db49ecf046)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/include/includes.h | 2 | ||||
-rw-r--r-- | source4/lib/util.c | 20 | ||||
-rw-r--r-- | source4/lib/util_str.c | 4 |
3 files changed, 24 insertions, 2 deletions
diff --git a/source4/include/includes.h b/source4/include/includes.h index 8b20ee9b4f..d29353cafc 100644 --- a/source4/include/includes.h +++ b/source4/include/includes.h @@ -1068,5 +1068,7 @@ time_t timegm(struct tm *tm); #include <sys/xattr.h> #endif +#define discard_const_p(type, ptr) (type *)discard_const(ptr) + #endif /* _INCLUDES_H */ diff --git a/source4/lib/util.c b/source4/lib/util.c index c09e1a2997..910a35217c 100644 --- a/source4/lib/util.c +++ b/source4/lib/util.c @@ -931,3 +931,23 @@ BOOL all_zero(const char *ptr, uint_t size) return True; } + +/* + this is a warning hack. The idea is to use this everywhere that we + get the "discarding const" warning from gcc, effectively moving all + the warnings to this one place. That doesn't actually fix the + problem of course, but it means that when we do get to cleaning them + up we can do it by searching the code for discard_const. + + It also means that other error types aren't as swamped by the noise + of hundreds of const warnings, so we are more likely to notice when + we get new errors. + + Please only add more calls to this function when you find it + _really_ hard to fix const warnings. Our aim is to eventually not + need this function at all, +*/ +void *discard_const(const void *ptr) +{ + return (void *)ptr; +} diff --git a/source4/lib/util_str.c b/source4/lib/util_str.c index cbe5988238..f8aadf8f59 100644 --- a/source4/lib/util_str.c +++ b/source4/lib/util_str.c @@ -703,7 +703,7 @@ char *strchr_m(const char *s, char c) return NULL; *p = 0; pull_ucs2_pstring(s2, ws); - return (char *)(s+strlen(s2)); + return discard_const_p(char, s+strlen(s2)); } char *strrchr_m(const char *s, char c) @@ -724,7 +724,7 @@ char *strrchr_m(const char *s, char c) return NULL; *p = 0; pull_ucs2_pstring(s2, ws); - return (char *)(s+strlen(s2)); + return discard_const_p(char, s+strlen(s2)); } /** |