1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-22 16:23:49 +03:00

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 commit is contained in:
Andrew Tridgell
2004-09-25 12:36:36 +00:00
committed by Gerald (Jerry) Carter
parent 2a7e5f0708
commit fec3288ad6
3 changed files with 24 additions and 2 deletions

View File

@@ -1068,5 +1068,7 @@ time_t timegm(struct tm *tm);
#include <sys/xattr.h> #include <sys/xattr.h>
#endif #endif
#define discard_const_p(type, ptr) (type *)discard_const(ptr)
#endif /* _INCLUDES_H */ #endif /* _INCLUDES_H */

View File

@@ -931,3 +931,23 @@ BOOL all_zero(const char *ptr, uint_t size)
return True; 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;
}

View File

@@ -703,7 +703,7 @@ char *strchr_m(const char *s, char c)
return NULL; return NULL;
*p = 0; *p = 0;
pull_ucs2_pstring(s2, ws); 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) char *strrchr_m(const char *s, char c)
@@ -724,7 +724,7 @@ char *strrchr_m(const char *s, char c)
return NULL; return NULL;
*p = 0; *p = 0;
pull_ucs2_pstring(s2, ws); pull_ucs2_pstring(s2, ws);
return (char *)(s+strlen(s2)); return discard_const_p(char, s+strlen(s2));
} }
/** /**