From 1ea6472e604ed0e411fa41fcb5f242729ee42cd6 Mon Sep 17 00:00:00 2001 From: Ben Laurie Date: Tue, 14 Oct 2008 08:10:52 +0000 Subject: Type-safe OBJ_bsearch_ex. --- crypto/objects/obj_dat.c | 8 +++++--- crypto/objects/objects.h | 14 +++++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) (limited to 'crypto/objects') diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c index acb6bcfb06..2f41aaeb0f 100644 --- a/crypto/objects/obj_dat.c +++ b/crypto/objects/obj_dat.c @@ -678,11 +678,13 @@ int OBJ_sn2nid(const char *s) const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, int (*cmp)(const void *, const void *)) { - return OBJ_bsearch_ex(key, base, num, size, cmp, 0); + return OBJ_bsearch_ex_(key, base, num, size, cmp, 0); } -const void *OBJ_bsearch_ex(const void *key, const void *base_, int num, - int size, int (*cmp)(const void *, const void *), int flags) +const void *OBJ_bsearch_ex_(const void *key, const void *base_, int num, + int size, + int (*cmp)(const void *, const void *), + int flags) { const char *base=base_; int l,h,i=0,c=0; diff --git a/crypto/objects/objects.h b/crypto/objects/objects.h index 7dc1bf5f00..ecbe03c2d9 100644 --- a/crypto/objects/objects.h +++ b/crypto/objects/objects.h @@ -1013,9 +1013,10 @@ int OBJ_sn2nid(const char *s); int OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b); const void * OBJ_bsearch_(const void *key,const void *base,int num,int size, int (*cmp)(const void *, const void *)); -const void * OBJ_bsearch_ex(const void *key,const void *base,int num, - int size, int (*cmp)(const void *, const void *), - int flags); +const void * OBJ_bsearch_ex_(const void *key,const void *base,int num, + int size, + int (*cmp)(const void *, const void *), + int flags); #define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, cmp) \ scope type1 *cmp##_type_1; \ @@ -1074,6 +1075,13 @@ const void * OBJ_bsearch_ex(const void *key,const void *base,int num, cmp##_type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ cmp##_BSEARCH_CMP_FN))) +#define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + (cmp##_type_1=CHECKED_PTR_OF(type1,cmp##_type_1), \ + cmp##_type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)),flags) + int OBJ_new_nid(int num); int OBJ_add_object(const ASN1_OBJECT *obj); int OBJ_create(const char *oid,const char *sn,const char *ln); -- cgit v1.2.3