| 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 |