summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/bsd-games-2.17-64bit.patch
blob: a56ea8454bc478f5f3036598412037de10e50e31 (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
David Leverton writes about adventure/crc.c:

The 'adventure' game from the games-misc/bsd-games-2.13 package crashes 
when saving the game on AMD64 (and probably other 64-bit systems, but I 
haven't checked).  Find attached to fix this.

http://bugs.gentoo.org/show_bug.cgi?id=77032


About utmpentry.c:

the utmpx structure defines the ut_tv member a little differently on 
64bit hosts so that a 32bit and 64bit structure can be shared.  So the 
ut_tv is a custom 32bit structure rather than the native 64bit timeval 
structure.  Work around is to assign the submembers instead.

http://bugs.gentoo.org/show_bug.cgi?id=102667

--- bsd-games/adventure/crc.c
+++ bsd-games/adventure/crc.c
@@ -134,7 +134,8 @@
 				if (step >= sizeof(crctab) / sizeof(crctab[0]))
 					step = 0;
 			}
-			crcval = (crcval << 8) ^ crctab[i];
+			/* Mask to 32 bits. */
+			crcval = ((crcval << 8) ^ crctab[i]) & 0xffffffff;
 		}
-	return crcval & 0xffffffff;	/* Mask to 32 bits. */
+	return crcval;
 }
--- bsd-games/dm/utmpentry.c
+++ bsd-games/dm/utmpentry.c
@@ -291,7 +291,8 @@
 	e->line[sizeof(e->line) - 1] = '\0';
 	(void)strncpy(e->host, up->ut_host, sizeof(up->ut_host));
 	e->name[sizeof(e->host) - 1] = '\0';
-	e->tv = up->ut_tv;
+	e->tv.tv_sec = up->ut_tv.tv_sec;
+	e->tv.tv_usec = up->ut_tv.tv_usec;
 	adjust_size(e);
 }
 #endif