--- gvpe/src/lzf/lzf_c.c 2007/12/02 10:31:50 1.4 +++ gvpe/src/lzf/lzf_c.c 2008/08/07 16:34:21 1.5 @@ -113,8 +113,19 @@ u8 *out_end = op + out_len; const u8 *ref; - unsigned int hval; + /* off requires a type wide enough to hold a general pointer difference. + * ISO C doesn't have that (size_t might not be enough and ptrdiff_t only + * works for differences within a single object). We also assume that no + * no bit pattern traps. Since the only platform that is both non-POSIX + * and fails to support both assumptions is windows 64 bit, we make a + * special workaround for it. + */ +#if defined (WIN32) && defined (_M_X64) + unsigned _int64 off; /* workaround for missing POSIX compliance */ +#else unsigned long off; +#endif + unsigned int hval; int lit; if (!in_len || !out_len)