generic-poky/meta/recipes-graphics/xorg-lib/libx11-1.3.4/makekeys_crosscompile.patch

46 lines
1.1 KiB
Diff

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 <X11/keysymdef.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stdint.h>
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;