diff options
author | Nicholas Clark <nick@ccl4.org> | 2005-06-23 14:11:20 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2005-06-23 14:11:20 +0000 |
commit | 94010e71b67db04027249ff69e2a2bfa9a050945 (patch) | |
tree | 3288295ac02b3ed67238e92114987299ead8ffc3 /handy.h | |
parent | 771ba71a7bf3673decf297992c8591f2ff873802 (diff) | |
download | perl-94010e71b67db04027249ff69e2a2bfa9a050945.tar.gz |
Add a define PERL_POISON which tries to trip up anything accessing
freed or uninitialised memory. Currently only Poison()s freed
pointers.
p4raw-id: //depot/perl@24959
Diffstat (limited to 'handy.h')
-rw-r--r-- | handy.h | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -626,7 +626,13 @@ hopefully catches attempts to access uninitialized memory. (v = (MEM_WRAP_CHECK_(n,t) (t*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t))))) #define Renewc(v,n,t,c) \ (v = (MEM_WRAP_CHECK_(n,t) (c*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t))))) + +#ifdef PERL_POISON +#define Safefree(d) \ + (d ? (void)(safefree((Malloc_t)(d)), Poison(&(d), 1, Malloc_t)) : (void) 0) +#else #define Safefree(d) safefree((Malloc_t)(d)) +#endif #define Move(s,d,n,t) (MEM_WRAP_CHECK_(n,t) (void)memmove((char*)(d),(const char*)(s), (n) * sizeof(t))) #define Copy(s,d,n,t) (MEM_WRAP_CHECK_(n,t) (void)memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) |