Cleanup lbo_valid / meminuse / memfuncs

This commit is contained in:
Howard Chu 2005-11-12 18:26:17 +00:00
parent 6eaf2b1ec4
commit 10c94f4e58
5 changed files with 44 additions and 82 deletions

View file

@ -248,8 +248,6 @@ ber_alloc_t( int options )
{
BerElement *ber;
ber_int_options.lbo_valid = LBER_INITIALIZED;
ber = (BerElement *) LBER_CALLOC( 1, sizeof(BerElement) );
if ( ber == NULL ) {
@ -301,8 +299,6 @@ ber_init2( BerElement *ber, struct berval *bv, int options )
{
assert( ber != NULL );
ber_int_options.lbo_valid = LBER_INITIALIZED;
(void) memset( (char *)ber, '\0', sizeof( BerElement ));
ber->ber_valid = LBER_VALID_BERELEMENT;
ber->ber_tag = LBER_DEFAULT;
@ -336,8 +332,6 @@ ber_init( struct berval *bv )
assert( bv != NULL );
ber_int_options.lbo_valid = LBER_INITIALIZED;
if ( bv == NULL ) {
return NULL;
}
@ -377,8 +371,6 @@ int ber_flatten2(
{
assert( bv != NULL );
ber_int_options.lbo_valid = LBER_INITIALIZED;
if ( bv == NULL ) {
return -1;
}
@ -416,8 +408,6 @@ int ber_flatten(
assert( bvPtr != NULL );
ber_int_options.lbo_valid = LBER_INITIALIZED;
if(bvPtr == NULL) {
return -1;
}

View file

@ -38,11 +38,20 @@ typedef void (*BER_LOG_FN)(FILE *file,
LBER_V (BER_ERRNO_FN) ber_int_errno_fn;
#ifdef LDAP_MEMORY_TRACE
# ifndef LDAP_MEMORY_DEBUG
# define LDAP_MEMORY_DEBUG 1
# endif
#endif
#ifdef LDAP_MEMORY_DEBUG
LBER_V (long) ber_int_meminuse;
#endif
struct lber_options {
short lbo_valid;
unsigned short lbo_options;
int lbo_debug;
long lbo_meminuse;
};
LBER_F( int ) ber_pvt_log_output(

View file

@ -21,9 +21,6 @@
#include "lber-int.h"
#ifdef LDAP_MEMORY_TRACE
# ifndef LDAP_MEMORY_DEBUG
# define LDAP_MEMORY_DEBUG 1
# endif
#include <stdio.h>
#endif
@ -67,7 +64,7 @@ struct ber_mem_hdr {
static const struct ber_mem_hdr ber_int_mem_hdr = { LBER_MEM_JUNK, 0, 0 };
/* Note sequence and ber_int_options.lbu_meminuse are counters, but are not
/* Note sequence and ber_int_meminuse are counters, but are not
* thread safe. If you want to use these values for multithreaded applications,
* you must put mutexes around them, otherwise they will have incorrect values.
* When debugging, if you sort the debug output, the sequence number will
@ -125,8 +122,6 @@ BerMemoryFunctions *ber_int_memory_fns = NULL;
void
ber_memfree_x( void *p, void *ctx )
{
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( p == NULL ) {
return;
}
@ -140,12 +135,12 @@ ber_memfree_x( void *p, void *ctx )
assert( mh->bm_top == LBER_MEM_JUNK);
assert( testdatatop( mh));
assert( testend( (char *)&mh[1] + mh->bm_length) );
ber_int_options.lbo_meminuse -= mh->bm_length;
ber_int_meminuse -= mh->bm_length;
#ifdef LDAP_MEMORY_TRACE
fprintf(stderr, "0x%08lx 0x%08lx -f- %ld ber_memfree %ld\n",
(long)mh->bm_sequence, (long)mh, (long)mh->bm_length,
ber_int_options.lbo_meminuse);
ber_int_meminuse);
#endif
/* Fill the free space with poison */
memset( mh, 0xff, mh->bm_length + sizeof(struct ber_mem_hdr) + sizeof(ber_int_t));
@ -172,8 +167,6 @@ ber_memvfree_x( void **vec, void *ctx )
{
int i;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( vec == NULL ) {
return;
}
@ -197,7 +190,6 @@ void *
ber_memalloc_x( ber_len_t s, void *ctx )
{
void *new;
ber_int_options.lbo_valid = LBER_INITIALIZED;
#ifdef LDAP_MEMORY_DEBUG
assert( s != 0 );
@ -217,13 +209,13 @@ ber_memalloc_x( ber_len_t s, void *ctx )
setdatatop( mh);
setend( (char *)&mh[1] + mh->bm_length );
ber_int_options.lbo_meminuse += mh->bm_length; /* Count mem inuse */
ber_int_meminuse += mh->bm_length; /* Count mem inuse */
#ifdef LDAP_MEMORY_TRACE
mh->bm_sequence = sequence++;
fprintf(stderr, "0x%08lx 0x%08lx -a- %ld ber_memalloc %ld\n",
(long)mh->bm_sequence, (long)mh, (long)mh->bm_length,
ber_int_options.lbo_meminuse);
ber_int_meminuse);
#endif
/* poison new memory */
memset( (char *)&mh[1], 0xff, s);
@ -254,7 +246,6 @@ void *
ber_memcalloc_x( ber_len_t n, ber_len_t s, void *ctx )
{
void *new;
ber_int_options.lbo_valid = LBER_INITIALIZED;
#ifdef LDAP_MEMORY_DEBUG
assert( n != 0 && s != 0);
@ -275,13 +266,13 @@ ber_memcalloc_x( ber_len_t n, ber_len_t s, void *ctx )
setdatatop( mh);
setend( (char *)&mh[1] + mh->bm_length );
ber_int_options.lbo_meminuse += mh->bm_length;
ber_int_meminuse += mh->bm_length;
#ifdef LDAP_MEMORY_TRACE
mh->bm_sequence = sequence++;
fprintf(stderr, "0x%08lx 0x%08lx -a- %ld ber_memcalloc %ld\n",
(long)mh->bm_sequence, (long)mh, (long)mh->bm_length,
ber_int_options.lbo_meminuse);
ber_int_meminuse);
#endif
BER_MEM_VALID( &mh[1] );
new = &mh[1];
@ -310,7 +301,6 @@ void *
ber_memrealloc_x( void* p, ber_len_t s, void *ctx )
{
void *new = NULL;
ber_int_options.lbo_valid = LBER_INITIALIZED;
/* realloc(NULL,s) -> malloc(s) */
if( p == NULL ) {
@ -352,11 +342,11 @@ ber_memrealloc_x( void* p, ber_len_t s, void *ctx )
assert( mh->bm_top == LBER_MEM_JUNK);
assert( testdatatop( mh));
ber_int_options.lbo_meminuse += s - oldlen;
ber_int_meminuse += s - oldlen;
#ifdef LDAP_MEMORY_TRACE
fprintf(stderr, "0x%08lx 0x%08lx -a- %ld ber_memrealloc %ld\n",
(long)mh->bm_sequence, (long)mh, (long)mh->bm_length,
ber_int_options.lbo_meminuse);
ber_int_meminuse);
#endif
BER_MEM_VALID( &mh[1] );
return &mh[1];
@ -383,8 +373,6 @@ ber_memrealloc( void* p, ber_len_t s )
void
ber_bvfree_x( struct berval *bv, void *ctx )
{
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( bv == NULL ) {
return;
}
@ -409,8 +397,6 @@ ber_bvecfree_x( struct berval **bv, void *ctx )
{
int i;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( bv == NULL ) {
return;
}
@ -440,8 +426,6 @@ ber_bvecadd_x( struct berval ***bvec, struct berval *bv, void *ctx )
ber_len_t i;
struct berval **new;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( *bvec == NULL ) {
if( bv == NULL ) {
/* nothing to add */
@ -497,8 +481,6 @@ ber_dupbv_x(
{
struct berval *new;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( src == NULL ) {
ber_errno = LBER_ERROR_PARAM;
return NULL;
@ -554,8 +536,6 @@ ber_str2bv_x(
{
struct berval *new;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( s == NULL ) {
ber_errno = LBER_ERROR_PARAM;
return NULL;
@ -602,8 +582,6 @@ ber_mem2bv_x(
{
struct berval *new;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if( s == NULL ) {
ber_errno = LBER_ERROR_PARAM;
return NULL;
@ -650,8 +628,6 @@ ber_strdup_x( LDAP_CONST char *s, void *ctx )
char *p;
size_t len;
ber_int_options.lbo_valid = LBER_INITIALIZED;
#ifdef LDAP_MEMORY_DEBUG
assert(s != NULL); /* bv damn better point to something */
#endif
@ -684,8 +660,6 @@ ber_strndup_x( LDAP_CONST char *s, ber_len_t l, void *ctx )
char *p;
size_t len;
ber_int_options.lbo_valid = LBER_INITIALIZED;
#ifdef LDAP_MEMORY_DEBUG
assert(s != NULL); /* bv damn better point to something */
#endif
@ -748,8 +722,6 @@ ber_bvarray_free_x( BerVarray a, void *ctx )
{
int i;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if (a) {
BER_MEM_VALID( a );
@ -776,8 +748,6 @@ ber_bvarray_add_x( BerVarray *a, BerValue *bv, void *ctx )
{
int n;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if ( *a == NULL ) {
if (bv == NULL) {
return 0;

View file

@ -23,7 +23,7 @@
char ber_pvt_opt_on; /* used to get a non-NULL address for *_OPT_ON */
struct lber_options ber_int_options = {
LBER_UNINITIALIZED, 0, 0, 0 };
LBER_UNINITIALIZED, 0, 0 };
static BerMemoryFunctions ber_int_memory_fns_datum;
@ -36,8 +36,6 @@ ber_get_option(
const BerElement *ber;
const Sockbuf *sb;
ber_int_options.lbo_valid = LBER_INITIALIZED;
if(outvalue == NULL) {
/* no place to get to */
ber_errno = LBER_ERROR_PARAM;
@ -59,7 +57,7 @@ ber_get_option(
* The counter is not accurate for multithreaded ldap applications.
*/
#ifdef LDAP_MEMORY_DEBUG
* (int *) outvalue = ber_int_options.lbo_meminuse;
* (int *) outvalue = ber_int_meminuse;
return LBER_OPT_SUCCESS;
#else
return LBER_OPT_ERROR;
@ -126,31 +124,6 @@ ber_set_option(
BerElement *ber;
Sockbuf *sb;
if( (ber_int_options.lbo_valid == LBER_UNINITIALIZED)
&& ( ber_int_memory_fns == NULL )
&& ( option == LBER_OPT_MEMORY_FNS )
&& ( invalue != NULL ) )
{
const BerMemoryFunctions *f =
(const BerMemoryFunctions *) invalue;
/* make sure all functions are provided */
if(!( f->bmf_malloc && f->bmf_calloc
&& f->bmf_realloc && f->bmf_free ))
{
ber_errno = LBER_ERROR_PARAM;
return LBER_OPT_ERROR;
}
ber_int_memory_fns = &ber_int_memory_fns_datum;
AC_MEMCPY(ber_int_memory_fns, f, sizeof(BerMemoryFunctions));
ber_int_options.lbo_valid = LBER_INITIALIZED;
return LBER_OPT_SUCCESS;
}
ber_int_options.lbo_valid = LBER_INITIALIZED;
if(invalue == NULL) {
/* no place to set from */
ber_errno = LBER_ERROR_PARAM;
@ -180,11 +153,33 @@ ber_set_option(
* The counter is not accurate for multithreaded applications.
*/
#ifdef LDAP_MEMORY_DEBUG
ber_int_options.lbo_meminuse = * (int *) invalue;
ber_int_meminuse = * (int *) invalue;
return LBER_OPT_SUCCESS;
#else
return LBER_OPT_ERROR;
#endif
case LBER_OPT_MEMORY_FNS:
if ( ber_int_memory_fns == NULL )
{
const BerMemoryFunctions *f =
(const BerMemoryFunctions *) invalue;
/* make sure all functions are provided */
if(!( f->bmf_malloc && f->bmf_calloc
&& f->bmf_realloc && f->bmf_free ))
{
ber_errno = LBER_ERROR_PARAM;
return LBER_OPT_ERROR;
}
ber_int_memory_fns = &ber_int_memory_fns_datum;
AC_MEMCPY(ber_int_memory_fns, f,
sizeof(BerMemoryFunctions));
return LBER_OPT_SUCCESS;
}
break;
case LBER_OPT_LOG_PROC:
ber_int_log_proc = (BER_LOG_FN)invalue;
return LBER_OPT_SUCCESS;

View file

@ -57,8 +57,6 @@ ber_sockbuf_alloc( void )
{
Sockbuf *sb;
ber_int_options.lbo_valid = LBER_INITIALIZED;
sb = LBER_CALLOC( 1, sizeof( Sockbuf ) );
if( sb == NULL ) return NULL;