remove NDEBUG code - bmf - bmf (Bayesian Mail Filter) 0.9.4 fork + patches
 (HTM) git clone git://git.codemadness.org/bmf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 13b02490de8ddfe9a9ad66cc2484f7fd3a3b9278
 (DIR) parent 107ae911553ca8a5885eecaa2da0c37e030c216d
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Sat, 22 Sep 2018 18:12:00 +0200
       
       remove NDEBUG code
       
       Diffstat:
         M Makefile                            |       4 ----
         M dbg.c                               |     264 +------------------------------
         M dbg.h                               |      15 ---------------
       
       3 files changed, 2 insertions(+), 281 deletions(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       @@ -5,10 +5,6 @@ MANDIR=/usr/share/man
        
        VERSION=0.9.4
        
       -CFLAGS+=-DNDEBUG -D_UNIX -D_BSD=40 -Wall
       -LDFLAGS+= 
       -SYSLIBS=
       -
        all: bmf
        
        bmf: bmf.o filt.o dbdb.o dbtext.o dbh.o lex.o vec.o str.o dbg.o
 (DIR) diff --git a/dbg.c b/dbg.c
       @@ -13,7 +13,6 @@
        #include "dbg.h"
        #include <stdarg.h>
        
       -
        uint g_verbose = 0;
        
        void verbose( int level, const char* fmt, ... )
       @@ -25,270 +24,13 @@ void verbose( int level, const char* fmt, ... )
                va_start( v, fmt );
                vsnprintf( str, sizeof(str)-1, fmt, v );
                str[sizeof(str)-1] = '\0';
       -#ifdef _UNIX
       -        fputs( str, stderr );
       -#endif
       -#ifdef _WIN32
       -        ::OutputDebugString( str );
       -#endif
       -    }
       -}
       -
       -#ifndef NDEBUG
       -
       -void dbgout( const char* fmt, ... )
       -{
       -    char str[4096];
       -    va_list v;
       -    va_start( v, fmt );
       -    vsnprintf( str, sizeof(str)-1, fmt, v );
       -    str[sizeof(str)-1] = '\0';
       -#ifdef _UNIX
       -    fputs( str, stderr );
       -#endif
       -#ifdef _WIN32
       -    ::OutputDebugString( str );
       -#endif
       -}
       -
       -/*
       - * Heap management routines.  These routines use unbalanced binary trees to
       - * keep track of allocations in an attempt to make them fast yet simple.
       - *
       - * Each block of memory consists of an alloc_node header, the requested
       - * memory block, and guard bytes before and after the requested memory
       - * block.  The requested memory block is filled with a semi-random byte
       - * value to ensure that the caller does not rely on any particular initial
       - * bit pattern (eg. a block of zeros or NULLs).  It is refilled with a
       - * (possibly different) byte value after deallocation to ensure that the
       - * caller doesn't attempt to use the freed memory.
       - */
       -
       -/* we need to use the real malloc and free */
       -#undef malloc
       -#undef free
       -
       -typedef struct _alloc_node
       -{
       -    struct _alloc_node* lptr;
       -    struct _alloc_node* rptr;
       -    size_t              len;
       -    cpchar              file;
       -    uint                line;
       -} alloc_node;
       -
       -static alloc_node* g_heap = NULL;
       -
       -/* Our magic guard bytes */
       -static byte g_guard[] =
       -{
       -    0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xAD, 0xBE, 0xEF,
       -    0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xAD, 0xBE, 0xEF
       -};
       -
       -void* debug_malloc( cpchar file, uint line, size_t n, int fill )
       -{
       -    byte* pmem = NULL;
       -    alloc_node* pnode;
       -
       -    pmem = NULL;
       -    if( n == 0 )
       -    {
       -        n = 1;
       -    }
       -    pnode = (alloc_node*)malloc( n + 2*sizeof(g_guard) + sizeof(alloc_node) );
       -    if( pnode != NULL )
       -    {
       -        alloc_node** ppuplink;
       -        alloc_node* pcur;
       -
       -        pmem = (byte*)pnode + sizeof(alloc_node) + sizeof(g_guard);
       -        memcpy( pmem - sizeof(g_guard), g_guard, sizeof(g_guard) );
       -        memset( pmem, fill, n );
       -        memcpy( pmem + n, g_guard, sizeof(g_guard) );
       -
       -        pnode->lptr = pnode->rptr = NULL;
       -        pnode->len = n;
       -        pnode->file = file;
       -        pnode->line = line;
       -        ppuplink = &g_heap;
       -        pcur = g_heap;
       -        while( pcur != NULL )
       -        {
       -            if( pnode == pcur )
       -            {
       -                dbgout( "%s(%u): *** FATAL: duplicate memory allocated ***\n", file, line );
       -                assert( false );
       -                exit( -1 );
       -            }
       -            if( pnode < pcur )
       -            {
       -                ppuplink = &pcur->lptr;
       -                pcur = pcur->lptr;
       -            }
       -            else
       -            {
       -                ppuplink = &pcur->rptr;
       -                pcur = pcur->rptr;
       -            }
       -        }
       -        *ppuplink = pnode;
       -    }
       -
       -    return pmem;
       -}
       -
       -void debug_free( cpchar file, uint line, void* p )
       -{
       -    alloc_node** ppuplink;
       -    alloc_node* pcur;
       -
       -    if( p == NULL )
       -    {
       -        return;
       -    }
       -    if( g_heap == NULL )
       -    {
       -        dbgout( "%s(%u): *** FATAL: delete with empty heap ***\n", file, line );
       -        assert( false );
       -        exit( -1 );
       -    }
        
       -    ppuplink = &g_heap;
       -    pcur = g_heap;
       -    while( pcur != NULL )
       -    {
       -        void* pcurblk = (char*)pcur + sizeof(alloc_node) + sizeof(g_guard);
       -        if( p == pcurblk )
       -        {
       -            byte* pmem = (byte*)p;
       -            if( memcmp( pmem - sizeof(g_guard), g_guard, sizeof(g_guard) ) != 0 ||
       -                memcmp( pmem + pcur->len, g_guard, sizeof(g_guard) ) != 0 )
       -            {
       -                dbgout( "%s(%u): *** FATAL: corrupted memory at %p\n", file, line, p );
       -                assert( false );
       -                exit( -1 );
       -            }
       -            memset( pmem, rand(), pcur->len );
       -            if( pcur->lptr && pcur->rptr )
       -            {
       -                /*
       -                 * node has both ptrs so replace it with left child and move
       -                 * right child to bottom right of left child's tree
       -                 */
       -                alloc_node* pend = pcur->lptr;
       -                while( pend->rptr ) pend = pend->rptr;
       -                *ppuplink = pcur->lptr;
       -                pend->rptr = pcur->rptr;
       -            }
       -            else
       -            {
       -                /* move child up */
       -                *ppuplink = (pcur->lptr) ? pcur->lptr : pcur->rptr;
       -            }
       -            free( pcur );
       -            return;
       -        }
       -        if( p < pcurblk )
       -        {
       -            ppuplink = &pcur->lptr;
       -            pcur = pcur->lptr;
       -        }
       -        else
       -        {
       -            ppuplink = &pcur->rptr;
       -            pcur = pcur->rptr;
       -        }
       -    }
       -
       -    dbgout( "%s(%u): *** FATAL: delete on unalloced memory ***\n", file, line );
       -    assert( false );
       -    exit( -1 );
       -}
       -
       -void* debug_realloc( cpchar file, uint line, void* p, size_t n )
       -{
       -    void* pnew;
       -
       -    if( p == NULL )
       -    {
       -        pnew = debug_malloc( file, line, n, rand() );
       -    }
       -    else if( n == 0 )
       -    {
       -        debug_free( file, line, p );
       -        pnew = NULL;
       -    }
       -    else
       -    {
       -        alloc_node* pnode = (alloc_node*)((char*)p-sizeof(g_guard)-sizeof(alloc_node));
       -        pnew = debug_malloc( file, line, n, rand() );
       -        if( pnew != NULL )
       -        {
       -            memcpy( pnew, p, pnode->len );
       -            debug_free( file, line, p );
       -        }
       -    }
       -
       -    return pnew;
       -}
       -
       -char* debug_strdup( cpchar file, uint line, cpchar s )
       -{
       -    char* s2;
       -    uint sl = strlen(s);
       -
       -    s2 = (char*)debug_malloc( file, line, sl+1, 0 );
       -    memcpy( s2, s, sl );
       -    s2[sl] = '\0';
       -
       -    return s2;
       -}
       -
       -char* debug_strndup( cpchar file, uint line, cpchar s, size_t n )
       -{
       -    char* s2;
       -    uint sl = strlen(s);
       -
       -    sl = min( n-1, sl );
       -    s2 = (char*)debug_malloc( file, line, sl+1, 0 );
       -    memcpy( s2, s, sl );
       -    s2[sl] = '\0';
       -
       -    return s2;
       -}
       -
       -static void walk_alloc_tree( alloc_node* pcur, size_t* pttl )
       -{
       -    if( pcur != NULL )
       -    {
       -        walk_alloc_tree( pcur->lptr, pttl );
       -        dbgout( "%s(%u): %u bytes at %p\n", pcur->file, pcur->line,
       -                pcur->len, pcur+sizeof(alloc_node)+sizeof(g_guard) );
       -        *pttl += pcur->len;
       -        walk_alloc_tree( pcur->rptr, pttl );
       -    }
       -}
       +        fputs( str, stderr );
        
       -void dump_alloc_heap( void )
       -{
       -    if( g_heap != NULL )
       -    {
       -        size_t ttl = 0;
       -        dbgout( "\n" );
       -        dbgout( "Memory leaks detected\n" );
       -        dbgout( "=====================\n" );
       -        dbgout( "\n" );
       -        walk_alloc_tree( g_heap, &ttl );
       -        dbgout( "\n" );
       -        dbgout( "=====================\n" );
       -        dbgout( "Total bytes: %u\n", ttl );
       -        dbgout( "=====================\n" );
       +        va_end( v );
            }
        }
        
       -#else /* ndef NDEBUG */
       -
        void dbgout( const char* fmt, ... )
        {
            /* empty */
       @@ -298,5 +40,3 @@ void dump_alloc_heap( void )
        {
            /* empty */
        }
       -
       -#endif /* ndef NDEBUG */
 (DIR) diff --git a/dbg.h b/dbg.h
       @@ -17,19 +17,4 @@ void verbose( int level, const char* fmt, ... );
        void dbgout( const char* fmt, ... );
        void dump_alloc_heap( void );
        
       -#ifndef NDEBUG
       -void* debug_malloc  ( cpchar file, uint line, size_t n, int fill );
       -void  debug_free    ( cpchar file, uint line, void* p );
       -void* debug_realloc ( cpchar file, uint line, void* p, size_t n );
       -char* debug_strdup  ( cpchar file, uint line, cpchar s );
       -char* debug_strndup ( cpchar file, uint line, cpchar s, size_t n );
       -
       -#define malloc(n)       debug_malloc    (__FILE__,__LINE__,n,rand())
       -#define calloc(n)       debug_calloc    (__FILE__,__LINE__,n,0)
       -#define free(p)         debug_free      (__FILE__,__LINE__,p)
       -#define realloc(p,n)    debug_realloc   (__FILE__,__LINE__,p,n)
       -#define strdup(s)       debug_strdup    (__FILE__,__LINE__,s)
       -#define strndup(s,n)    debug_strndup   (__FILE__,__LINE__,s,n)
       -#endif /* ndef NDEBUG */
       -
        #endif /* ndef _DBG_H */