X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslurpd%2Fch_malloc.c;h=2b42ab266329b1023ddcfe053e37423f789e78c6;hb=3868f3b5a7ebdbc098945df8401673905fa2e8a1;hp=0adcb7bddff979a28090779657f3c234eca43b95;hpb=669b8f4047c03d4583a44ed8287d0d5920d15373;p=openldap diff --git a/servers/slurpd/ch_malloc.c b/servers/slurpd/ch_malloc.c index 0adcb7bddf..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. */ @@ -24,6 +31,7 @@ #include "../slapd/slap.h" +#ifndef CSRIMALLOC /* * Just like malloc, except we check the returned value and exit @@ -36,10 +44,10 @@ ch_malloc( { void *new; - if ( (new = (void *) malloc( size )) == NULL ) { + if ( (new = (void *) ber_memalloc( size )) == NULL ) { fprintf( stderr, "malloc of %lu bytes failed\n", (long) size ); - exit( 1 ); + exit( EXIT_FAILURE ); } return( new ); @@ -64,10 +72,14 @@ ch_realloc( return( ch_malloc( size ) ); } - if ( (new = (void *) realloc( block, size )) == NULL ) { + 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( 1 ); + exit( EXIT_FAILURE ); } return( new ); @@ -88,15 +100,34 @@ ch_calloc( { 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", (long) nelem, (long) size ); - exit( 1 ); + 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. @@ -107,8 +138,9 @@ ch_free( ) { if ( p != NULL ) { - free( p ); + ber_memfree( p ); } return; } - + +#endif