aboutsummaryrefslogtreecommitdiff
path: root/crypto/stack
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/stack')
-rw-r--r--crypto/stack/safestack.h6
-rw-r--r--crypto/stack/stack.c21
-rw-r--r--crypto/stack/stack.h8
3 files changed, 17 insertions, 18 deletions
diff --git a/crypto/stack/safestack.h b/crypto/stack/safestack.h
index 3893498..c3b2dd7 100644
--- a/crypto/stack/safestack.h
+++ b/crypto/stack/safestack.h
@@ -87,7 +87,7 @@ void sk_##type##_sort(STACK_OF(type) *sk);
#define IMPLEMENT_STACK_OF(type) \
STACK_OF(type) *sk_##type##_new(int (*cmp)(type **,type **)) \
- { return (STACK_OF(type) *)sk_new(cmp); } \
+ { return (STACK_OF(type) *)sk_new((int (*)())cmp); } \
STACK_OF(type) *sk_##type##_new_null() \
{ return (STACK_OF(type) *)sk_new_null(); } \
void sk_##type##_free(STACK_OF(type) *sk) \
@@ -114,11 +114,11 @@ int sk_##type##_insert(STACK_OF(type) *sk,type *v,int n) \
{ return sk_insert((STACK *)sk,(char *)v,n); } \
int (*sk_##type##_set_cmp_func(STACK_OF(type) *sk, \
int (*cmp)(type **,type **)))(type **,type **) \
- { return (int (*)(type **,type **))sk_set_cmp_func((STACK *)sk,cmp); } \
+ { return (int (*)(type **,type **))sk_set_cmp_func((STACK *)sk,(int(*)(const void *, const void *))cmp); } \
STACK_OF(type) *sk_##type##_dup(STACK_OF(type) *sk) \
{ return (STACK_OF(type) *)sk_dup((STACK *)sk); } \
void sk_##type##_pop_free(STACK_OF(type) *sk,void (*func)(type *)) \
- { sk_pop_free((STACK *)sk,func); } \
+ { sk_pop_free((STACK *)sk,(void (*)(void *))func); } \
type *sk_##type##_shift(STACK_OF(type) *sk) \
{ return (type *)sk_shift((STACK *)sk); } \
type *sk_##type##_pop(STACK_OF(type) *sk) \
diff --git a/crypto/stack/stack.c b/crypto/stack/stack.c
index 58e9126..3e2f4d8 100644
--- a/crypto/stack/stack.c
+++ b/crypto/stack/stack.c
@@ -74,12 +74,11 @@
const char *STACK_version="Stack" OPENSSL_VERSION_PTEXT;
-#define FP_ICC (int (*)(const void *,const void *))
#include <errno.h>
-int (*sk_set_cmp_func(STACK *sk, int (*c)()))(void)
+int (*sk_set_cmp_func(STACK *sk, int (*c)(const void *,const void *)))(const void *, const void *)
{
- int (*old)()=sk->comp;
+ int (*old)(const void *,const void *)=sk->comp;
if (sk->comp != c)
sk->sorted=0;
@@ -109,7 +108,7 @@ err:
return(NULL);
}
-STACK *sk_new(int (*c)())
+STACK *sk_new(int (*c)(const void *, const void *))
{
STACK *ret;
int i;
@@ -207,7 +206,7 @@ int sk_find(STACK *st, char *data)
{
char **r;
int i;
- int (*comp_func)();
+ int (*comp_func)(const void *,const void *);
if(st == NULL) return -1;
if (st->comp == NULL)
@@ -219,9 +218,9 @@ int sk_find(STACK *st, char *data)
}
sk_sort(st);
if (data == NULL) return(-1);
- comp_func=(int (*)())st->comp;
+ comp_func=st->comp;
r=(char **)bsearch(&data,(char *)st->data,
- st->num,sizeof(char *),FP_ICC comp_func);
+ st->num,sizeof(char *), comp_func);
if (r == NULL) return(-1);
i=(int)(r-st->data);
for ( ; i>0; i--)
@@ -262,7 +261,7 @@ void sk_zero(STACK *st)
st->num=0;
}
-void sk_pop_free(STACK *st, void (*func)())
+void sk_pop_free(STACK *st, void (*func)(void *))
{
int i;
@@ -302,10 +301,10 @@ void sk_sort(STACK *st)
{
if (!st->sorted)
{
- int (*comp_func)();
+ int (*comp_func)(const void *,const void *);
- comp_func=(int (*)())st->comp;
- qsort(st->data,st->num,sizeof(char *),FP_ICC comp_func);
+ comp_func=st->comp;
+ qsort(st->data,st->num,sizeof(char *), comp_func);
st->sorted=1;
}
}
diff --git a/crypto/stack/stack.h b/crypto/stack/stack.h
index a615d9b..a6665f3 100644
--- a/crypto/stack/stack.h
+++ b/crypto/stack/stack.h
@@ -70,7 +70,7 @@ typedef struct stack_st
int sorted;
int num_alloc;
- int (*comp)();
+ int (*comp)(const void *, const void *);
} STACK;
@@ -84,9 +84,9 @@ char *sk_value(STACK *, int);
char *sk_set(STACK *, int, char *);
-STACK *sk_new(int (*cmp)());
+STACK *sk_new(int (*cmp)(const void *, const void *));
void sk_free(STACK *);
-void sk_pop_free(STACK *st, void (*func)());
+void sk_pop_free(STACK *st, void (*func)(void *));
int sk_insert(STACK *sk,char *data,int where);
char *sk_delete(STACK *st,int loc);
char *sk_delete_ptr(STACK *st, char *p);
@@ -96,7 +96,7 @@ int sk_unshift(STACK *st,char *data);
char *sk_shift(STACK *st);
char *sk_pop(STACK *st);
void sk_zero(STACK *st);
-int (*sk_set_cmp_func(STACK *sk, int (*c)()))();
+int (*sk_set_cmp_func(STACK *sk, int (*c)(const void *,const void *)))(const void *, const void *);
STACK *sk_dup(STACK *st);
void sk_sort(STACK *st);