00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MPD_POISON_H
00021 #define MPD_POISON_H
00022
00023 #include "check.h"
00024
00025 #ifndef NDEBUG
00026
00027 #ifdef HAVE_VALGRIND_MEMCHECK_H
00028 #include <valgrind/memcheck.h>
00029 #endif
00030
00031 #include <string.h>
00032 #endif
00033
00040 static inline void
00041 poison_noaccess(void *p, size_t length)
00042 {
00043 #ifdef NDEBUG
00044 (void)p;
00045 (void)length;
00046 #else
00047 memset(p, 0x01, length);
00048
00049 #ifdef HAVE_VALGRIND_MEMCHECK_H
00050 (void)VALGRIND_MAKE_MEM_NOACCESS(p, length);
00051 #endif
00052 #endif
00053 }
00054
00061 static inline void
00062 poison_undefined(void *p, size_t length)
00063 {
00064 #ifdef NDEBUG
00065 (void)p;
00066 (void)length;
00067 #else
00068 memset(p, 0x02, length);
00069
00070 #ifdef HAVE_VALGRIND_MEMCHECK_H
00071 (void)VALGRIND_MAKE_MEM_UNDEFINED(p, length);
00072 #endif
00073 #endif
00074 }
00075
00076
00077 #endif