Because the size of "unsigned long" is different between 32-bit and 64-bit, judge whether target is 32-bit or 64-bit and tell "makekey". Upstream-Status: Pending Signed-off-by: dbuitenh@windriver.com --- libX11-1.3.4.orig/src/util/makekeys.c 2010-01-15 09:11:36.000000000 +0800 +++ libX11-1.3.4/src/util/makekeys.c 2011-05-24 19:04:25.454774908 +0800 @@ -33,6 +33,7 @@ #include #include #include +#include typedef unsigned long Signature; @@ -124,7 +125,12 @@ name = info[i].name; sig = 0; while ((c = *name++)) - sig = (sig << 1) + c; +#ifdef USE32 + sig = (uint32_t)(sig << 1) + c; +#else + sig = (uint64_t)(sig << 1) + c; +#endif + first = j = sig % z; for (k = 0; tab[j]; k++) { j += first + 1; @@ -163,7 +169,11 @@ name = info[i].name; sig = 0; while ((c = *name++)) - sig = (sig << 1) + c; +#ifdef USE32 + sig = (uint32_t)(sig << 1) + c; +#else + sig = (uint64_t)(sig << 1) + c; +#endif first = j = sig % z; while (offsets[j]) { j += first + 1;