summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/xorg-lib/libx11-trim-1.4.4/makekeys_crosscompile.patch
blob: e5eacf05152db3cd45ae09d0a309a5556d7104be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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;