Armin - 2006-10-31

Logged In: YES
user_id=1016107

This particular problem is due to ccutil/host.h having
inconsistent definitions for 32bit ints:

typedef long INT32;
typedef unsigned int UINT32;

This is plainly wrong, as int and long have no reason to
have the same size on a given platform. As a temproary fix,
changing long to int would make this particular crash go
away (and be replaced by compile errors and other crashes).
A better solution IMHO would be, since configure checks for
the C99 header stdint.h anyway, to do sokmething like:

#ifdef HAVE_STDINT_H /*defined or not in the generated
config_auto.h */
#include <stdint.h>

typedef int8_t INT8;
typedef uint8_t UINT8;
typedef int16_t INT16;
typedef uint16_t UINT16;
typedef int32_t INT32;
typedef uint32_t UINT32;

/* same for pointers and const pointers */
#else
/* original defines, for old compilers that do not have
stdint.h */
#endif

and leave the platform-specific C library figure out how to
define the sizes.

Note that making INT32 a 32-bit integer will break some
pointer-to INT32 conversions (gcc flags that as an error) -
typically in lengths passed through pointers. Making the
length a long or an explicit cast pointer->long->INT32 fixes
that problem.

And please, please, maintainers, fix the bloody name
spellings - s/case_sensative/case_sensitive/p and so on. The
code is spaghetti enough without having to parse Engrish as
well.