1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-12 20:58:37 +03:00

r2900: rusty pointed out to me that discard_const() can be done via a macro

on systems that have the intptr_t type, and for systems that don't
have it, they also almost certainly won't have -Wcast-qual, so we can use a
void* cast.
This commit is contained in:
Andrew Tridgell 2004-10-11 01:03:27 +00:00 committed by Gerald (Jerry) Carter
parent 4b5bf739f5
commit 2132d38f9c
3 changed files with 23 additions and 24 deletions

View File

@ -275,6 +275,7 @@ AC_CHECK_TYPE(ino_t,unsigned)
AC_CHECK_TYPE(loff_t,off_t)
AC_CHECK_TYPE(offset_t,loff_t)
AC_CHECK_TYPE(ssize_t, int)
AC_CHECK_TYPE(intptr_t, void*)
############################################

View File

@ -1068,9 +1068,29 @@ time_t timegm(struct tm *tm);
#include <sys/xattr.h>
#endif
#define discard_const_p(type, ptr) ((type *)discard_const(ptr))
#define TALLOC_ABORT(reason) smb_panic(reason)
/*
this is a warning hack. The idea is to use this everywhere that we
get the "discarding const" warning from gcc. 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 uses of this macro when you find it
_really_ hard to fix const warnings. Our aim is to eventually use
this function in only a very few places.
Also, please call this via the discard_const_p() macro interface, as that
makes the return type safe.
*/
#define discard_const(ptr) ((void *)((intptr_t)(ptr)))
#define discard_const_p(type, ptr) ((type *)discard_const(ptr))
#endif /* _INCLUDES_H */

View File

@ -892,25 +892,3 @@ BOOL all_zero(const char *ptr, uint_t size)
}
/*
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 use
this function in only a very few places.
Also, please call this via the discard_const_p() macro interface, as that
makes the return type safe.
*/
void *discard_const(const void *ptr)
{
return (void *)ptr;
}