/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2003-2006 The OpenLDAP Foundation.
+ * Copyright 2003-2009 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
slap_sl_mem_create(
ber_len_t size,
int stack,
- void *ctx
+ void *ctx,
+ int new
)
{
struct slab_heap *sh;
sh = sh_tmp;
#endif
+ if ( !new )
+ return sh;
+
/* round up to doubleword boundary */
size += pad;
size &= ~pad;
slheap = sh;
#else
ldap_pvt_thread_pool_setkey(ctx, (void *)slap_sl_mem_init,
- (void *)sh, slap_sl_mem_destroy);
+ (void *)sh, slap_sl_mem_destroy, NULL, NULL);
#endif
} else if ( size > (char *)sh->sh_end - (char *)sh->sh_base ) {
void *newptr;
slheap = sh;
#else
ldap_pvt_thread_pool_setkey(ctx, (void *)slap_sl_mem_init,
- (void *)sh, slap_sl_mem_destroy);
+ (void *)sh, slap_sl_mem_destroy, NULL, NULL);
#endif
} else {
for (i = 0; i <= sh->sh_maxorder - order_start; i++) {
if (size > (char *)sh->sh_end - (char *)sh->sh_base) {
void *newptr;
- newptr = realloc( sh->sh_base, size );
+ newptr = ch_realloc( sh->sh_base, size );
if ( newptr == NULL ) return NULL;
sh->sh_base = newptr;
}
slheap = NULL;
#else
/* separate from context */
- ldap_pvt_thread_pool_setkey( ctx, (void *)slap_sl_mem_init, NULL, NULL );
+ ldap_pvt_thread_pool_setkey( ctx, (void *)slap_sl_mem_init,
+ NULL, 0, NULL, NULL );
#endif
}
int i, j;
#ifdef SLAP_NO_SL_MALLOC
- return ber_malloc_x( size, NULL );
+ newptr = ber_memalloc_x( size, NULL );
+ if ( newptr ) return newptr;
+ assert( 0 );
+ exit( EXIT_FAILURE );
#endif
/* ber_set_option calls us like this */
- if (!ctx) return ber_memalloc_x(size, NULL);
+ if (!ctx) {
+ newptr = ber_memalloc_x( size, NULL );
+ if ( newptr ) return newptr;
+ assert( 0 );
+ exit( EXIT_FAILURE );
+ }
/* round up to doubleword boundary */
size += sizeof(ber_len_t) + pad;
return slap_sl_malloc(size, ctx);
#ifdef SLAP_NO_SL_MALLOC
- return ber_memrealloc_x( ptr, size, NULL );
+ newptr = ber_memrealloc_x( ptr, size, NULL );
+ if ( newptr ) return newptr;
+ assert( 0 );
+ exit( EXIT_FAILURE );
#endif
/* Not our memory? */