提交 01296a6d 编写于 作者: G Geoff Thorpe

All the little functions created by the IMPLEMENT_STACK_OF() macro will

cast their type-specific STACK into a real STACK and call the underlying
sk_*** function. The problem is that if the STACK_OF(..) parameter being
passed in has a "const *" qualifier, it is discarded by the cast.

I'm currently implementing a fix for this but in the mean-time, this is
one case I noticed (a few type-specific sk_**_num() functions pass in
const type-specific stacks). If there are other errors in the code where
consts are being discarded, we will similarly not notice them. yuck.
上级 2ace287d
...@@ -279,7 +279,7 @@ void sk_free(STACK *st) ...@@ -279,7 +279,7 @@ void sk_free(STACK *st)
Free(st); Free(st);
} }
int sk_num(STACK *st) int sk_num(const STACK *st)
{ {
if(st == NULL) return -1; if(st == NULL) return -1;
return st->num; return st->num;
......
...@@ -79,7 +79,7 @@ typedef struct stack_st ...@@ -79,7 +79,7 @@ typedef struct stack_st
#define M_sk_num(sk) ((sk) ? (sk)->num:-1) #define M_sk_num(sk) ((sk) ? (sk)->num:-1)
#define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL) #define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL)
int sk_num(STACK *); int sk_num(const STACK *);
char *sk_value(STACK *, int); char *sk_value(STACK *, int);
char *sk_set(STACK *, int, char *); char *sk_set(STACK *, int, char *);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册