--- malloc/malloc.c.orig 2004-01-03 18:36:23.000000000 -0500 +++ malloc/malloc.c 2004-01-03 18:46:16.000000000 -0500 @@ -311,6 +311,11 @@ extern "C" { #define assert(x) ((void)0) #endif +/* needed for owl-malloc-unlink-sanity-check */ +#include +#ifndef ABORT_INSTRUCTION +#define ABORT_INSTRUCTION +#endif /* INTERNAL_SIZE_T is the word-size used for internal bookkeeping @@ -1951,6 +1956,14 @@ typedef struct malloc_chunk* mbinptr; #define unlink(P, BK, FD) { \ FD = P->fd; \ BK = P->bk; \ + /* owl-malloc-unlink-sanity-check */ \ + if (FD->bk != P || BK->fd != P) \ + { \ + ABORT_INSTRUCTION; \ + _exit(127); \ + while (1) \ + ABORT_INSTRUCTION; \ + } \ FD->bk = BK; \ BK->fd = FD; \ }