Index: openssl/crypto/ex_data.c |
=================================================================== |
--- openssl/crypto/ex_data.c (revision 105093) |
+++ openssl/crypto/ex_data.c (working copy) |
@@ -245,18 +245,21 @@ |
static int ex_class = CRYPTO_EX_INDEX_USER; |
/* The global hash table of EX_CLASS_ITEM items */ |
-static LHASH *ex_data = NULL; |
+DECLARE_LHASH_OF(EX_CLASS_ITEM); |
+static LHASH_OF(EX_CLASS_ITEM) *ex_data = NULL; |
/* The callbacks required in the "ex_data" hash table */ |
-static unsigned long ex_hash_cb(const void *a_void) |
+static unsigned long ex_class_item_hash(const EX_CLASS_ITEM *a) |
{ |
- return ((const EX_CLASS_ITEM *)a_void)->class_index; |
+ return a->class_index; |
} |
-static int ex_cmp_cb(const void *a_void, const void *b_void) |
+static IMPLEMENT_LHASH_HASH_FN(ex_class_item, EX_CLASS_ITEM) |
+ |
+static int ex_class_item_cmp(const EX_CLASS_ITEM *a, const EX_CLASS_ITEM *b) |
{ |
- return (((const EX_CLASS_ITEM *)a_void)->class_index - |
- ((const EX_CLASS_ITEM *)b_void)->class_index); |
+ return a->class_index - b->class_index; |
} |
+static IMPLEMENT_LHASH_COMP_FN(ex_class_item, EX_CLASS_ITEM) |
/* Internal functions used by the "impl_default" implementation to access the |
* state */ |
@@ -265,7 +268,8 @@ |
{ |
int toret = 1; |
CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA); |
- if(!ex_data && ((ex_data = lh_new(ex_hash_cb, ex_cmp_cb)) == NULL)) |
+ if(!ex_data |
+ && (ex_data = lh_EX_CLASS_ITEM_new()) == NULL) |
toret = 0; |
CRYPTO_w_unlock(CRYPTO_LOCK_EX_DATA); |
return toret; |
@@ -298,7 +302,7 @@ |
EX_DATA_CHECK(return NULL;) |
d.class_index = class_index; |
CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA); |
- p = lh_retrieve(ex_data, &d); |
+ p = lh_EX_CLASS_ITEM_retrieve(ex_data, &d); |
if(!p) |
{ |
gen = OPENSSL_malloc(sizeof(EX_CLASS_ITEM)); |
@@ -313,7 +317,7 @@ |
{ |
/* Because we're inside the ex_data lock, the |
* return value from the insert will be NULL */ |
- lh_insert(ex_data, gen); |
+ (void)lh_EX_CLASS_ITEM_insert(ex_data, gen); |
p = gen; |
} |
} |
@@ -375,8 +379,8 @@ |
static void int_cleanup(void) |
{ |
EX_DATA_CHECK(return;) |
- lh_doall(ex_data, def_cleanup_cb); |
- lh_free(ex_data); |
+ lh_EX_CLASS_ITEM_doall(ex_data, def_cleanup_cb); |
+ lh_EX_CLASS_ITEM_free(ex_data); |
ex_data = NULL; |
impl = NULL; |
} |
@@ -452,7 +456,7 @@ |
return 0; |
CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); |
mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); |
- j = sk_num(from->sk); |
+ j = sk_void_num(from->sk); |
if(j < mx) |
mx = j; |
if(mx > 0) |
@@ -523,7 +527,7 @@ |
OPENSSL_free(storage); |
if(ad->sk) |
{ |
- sk_free(ad->sk); |
+ sk_void_free(ad->sk); |
ad->sk=NULL; |
} |
} |
@@ -596,24 +600,24 @@ |
if (ad->sk == NULL) |
{ |
- if ((ad->sk=sk_new_null()) == NULL) |
+ if ((ad->sk=sk_void_new_null()) == NULL) |
{ |
CRYPTOerr(CRYPTO_F_CRYPTO_SET_EX_DATA,ERR_R_MALLOC_FAILURE); |
return(0); |
} |
} |
- i=sk_num(ad->sk); |
+ i=sk_void_num(ad->sk); |
while (i <= idx) |
{ |
- if (!sk_push(ad->sk,NULL)) |
+ if (!sk_void_push(ad->sk,NULL)) |
{ |
CRYPTOerr(CRYPTO_F_CRYPTO_SET_EX_DATA,ERR_R_MALLOC_FAILURE); |
return(0); |
} |
i++; |
} |
- sk_set(ad->sk,idx,val); |
+ sk_void_set(ad->sk,idx,val); |
return(1); |
} |
@@ -623,10 +627,10 @@ |
{ |
if (ad->sk == NULL) |
return(0); |
- else if (idx >= sk_num(ad->sk)) |
+ else if (idx >= sk_void_num(ad->sk)) |
return(0); |
else |
- return(sk_value(ad->sk,idx)); |
+ return(sk_void_value(ad->sk,idx)); |
} |
IMPLEMENT_STACK_OF(CRYPTO_EX_DATA_FUNCS) |