summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/include/includes.h2
-rw-r--r--source4/lib/util.c20
-rw-r--r--source4/lib/util_str.c4
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));
}
/**