Bruce Momjian <[EMAIL PROTECTED]> writes:
Andrew Dunstan wrote:
fresh checkout just compiled fine for me on Linux (RH8) with ssl enabled. Maybe it is your openssl installation?
It is openssl 0.9.7c. 7.4 CVS compiles fine so I don't see how it can
be my SSL install.
I've been able to reproduce this on one of my machines, and it's nasty. It's a conflict between other people's headers.
/usr/local/include/zlib.h (version 1.1.4) quoth:
typedef void (*free_func) OF((voidpf opaque, voidpf address));
/usr/local/ssl/include/openssl/crypto.h (0.9.7c) quoth:
int CRYPTO_set_locked_mem_functions(void *(*m)(size_t), void (*free_func)(void *));
So if this version of zlib.h is included before this version of crypto.h, things break. Other way 'round works fine.
We can work around this by being more careful about inclusion order of these headers. Ultimately it would be nice if the upstream library authors could avoid the name conflict. I'm of the opinion that zlib should not be typedef'ing a name as generic as "free_func", but if they've made that part of their exported API, it might be hard for them to change.
In that case I'm confused about why this code compiles on my machine:
---------------- #include <stdio.h> #include <zconf.h>
typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); typedef void (*free_func) OF((voidpf opaque, voidpf address));
int CRYPTO_set_locked_mem_functions(void *(*m)(size_t), void (*free_func)(void *));
int main() { return 0; } --------------------
Also, in compiling pg_dump/common.c, zlib.h (which has this typedef on my machine) *is* included before openssl/crypto.h.
Either there is something I'm not getting (quite possible ;-) ), or the problem lies deeper. (compiler version maybe?)
cheers
andrew
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?
http://archives.postgresql.org