> But you can pass 'X509 **' as 'void *'. So... > void x509func(void* p) { X509** pp = (X509**)p; ... } > void trampoline(void* p) { x509func(p); } > void caller(void) { X509* p; trampoline(&p); } > > should (MUST?) work just fine. > > /r$
When I change my test programs from 'float *' to either 'void *' or 'char *', the warning goes away. I believe this is completely safe. So long as the pointer is a 'char *' or a 'void *' at the point of contention, you are fine. A union would also work. (Whether you use a real union with a pointer to every possible type or a bogus union containing just a 'char **'. The Linux kernel contains stuff like this: /* * Make sure gcc doesn't try to be clever and move things around * on us. We need to use _exactly_ the address the user gave us, * not some alias that contains the same information. */ typedef struct { volatile int counter; } atomic_t; DS ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager [EMAIL PROTECTED]