X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslurpd%2Fch_malloc.c;h=2b42ab266329b1023ddcfe053e37423f789e78c6;hb=f07179ca615bd9583190e3a7770372db1547a3ba;hp=d6ad464e41e7a3e1ce24edf89c92e4fc8ceabf58;hpb=7e6ad5100c2702b1d56a285bdfb341ddf38c0d76;p=openldap diff --git a/servers/slurpd/ch_malloc.c b/servers/slurpd/ch_malloc.c index d6ad464e41..2b42ab2663 100644 --- a/servers/slurpd/ch_malloc.c +++ b/servers/slurpd/ch_malloc.c @@ -1,3 +1,8 @@ +/* $OpenLDAP$ */ +/* + * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ /* * Copyright (c) 1996 Regents of the University of Michigan. * All rights reserved. @@ -10,6 +15,8 @@ * is provided ``as is'' without express or implied warranty. */ +#define CH_FREE 1 + /* * ch_malloc.c - malloc() and friends, with check for NULL return. */ @@ -17,13 +24,14 @@ #include "portable.h" #include -#include +#include #include #include "../slapd/slap.h" +#ifndef CSRIMALLOC /* * Just like malloc, except we check the returned value and exit @@ -31,14 +39,15 @@ */ void * ch_malloc( - unsigned long size + ber_len_t size ) { void *new; - if ( (new = (void *) malloc( size )) == NULL ) { - fprintf( stderr, "malloc of %lu bytes failed\n", size ); - exit( 1 ); + if ( (new = (void *) ber_memalloc( size )) == NULL ) { + fprintf( stderr, "malloc of %lu bytes failed\n", + (long) size ); + exit( EXIT_FAILURE ); } return( new ); @@ -54,7 +63,7 @@ ch_malloc( void * ch_realloc( void *block, - unsigned long size + ber_len_t size ) { void *new; @@ -63,9 +72,14 @@ ch_realloc( return( ch_malloc( size ) ); } - if ( (new = (void *) realloc( block, size )) == NULL ) { - fprintf( stderr, "realloc of %lu bytes failed\n", size ); - exit( 1 ); + if ( size == 0 ) { + ch_free( block ); + } + + if ( (new = (void *) ber_memrealloc( block, size )) == NULL ) { + fprintf( stderr, "realloc of %lu bytes failed\n", + (long) size ); + exit( EXIT_FAILURE ); } return( new ); @@ -80,21 +94,40 @@ ch_realloc( */ void * ch_calloc( - unsigned long nelem, - unsigned long size + ber_len_t nelem, + ber_len_t size ) { void *new; - if ( (new = (void *) calloc( nelem, size )) == NULL ) { + if ( (new = (void *) ber_memcalloc( nelem, size )) == NULL ) { fprintf( stderr, "calloc of %lu elems of %lu bytes failed\n", - nelem, size ); - exit( 1 ); + (long) nelem, (long) size ); + exit( EXIT_FAILURE ); } return( new ); } +/* + * Just like strdup, except we check the returned value and exit + * if anything goes wrong. + */ +char * +ch_strdup( + const char *string +) +{ + char *new; + + if ( (new = ber_strdup( string )) == NULL ) { + fprintf( stderr, "ch_strdup: duplication of \"%s\" failed\n", + string ); + exit( EXIT_FAILURE ); + } + + return( new ); +} /* * Just like free, except we check to see if p is null. @@ -105,8 +138,9 @@ ch_free( ) { if ( p != NULL ) { - free( p ); + ber_memfree( p ); } return; } - + +#endif