Tom Lane wrote:

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

Reply via email to