diff options
-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)); } /** |