[MPlayer-dev-eng] [PATCH] unrarlib on AMD64
Rich Felker
dalias at aerifal.cx
Sun Apr 17 03:56:00 CEST 2005
On Sat, Apr 16, 2005 at 08:25:04PM +0200, Pieter Wuille wrote:
> Hi,
>
> I noticed that mplayer wasn't able to use rarred vobsub files (v2.71) on my AMD64 system (linux 2.6.11.6 x86_64)
> It seemed that unrarlib's urarlib_get() function always returned false.
>
> After some time searching i saw there was a line
>
> typedef unsigned long UDWORD;
>
> in unrarlib.h. On a 64-bit system, a long is 64 bits, which isn't really a DWORD. Changing it to
> int solved the problem.
>
> Maybe it's dangerous to change it unconditionally to int, because there might be other platforms where
> int and long differ in size, but it should really be an int. (I've only tested it on my own system)
>
> Here's the patch:
>
> diff -Naur MPlayer-20050416/unrarlib.h MPlayer-20050416-patched/unrarlib.h
> --- MPlayer-20050416/unrarlib.h 2005-04-15 20:48:03.000000000 +0200
> +++ MPlayer-20050416-patched/unrarlib.h 2005-04-16 18:17:38.000000000 +0200
> @@ -97,13 +97,13 @@
> #ifdef _WIN_32
> typedef unsigned char UBYTE; /* WIN32 definitions */
> typedef unsigned short UWORD;
> -typedef unsigned long UDWORD;
> +typedef unsigned int UDWORD;
> #endif
>
> #ifdef _UNIX /* LINUX/UNIX definitions */
> typedef unsigned char UBYTE;
> typedef unsigned short UWORD;
> -typedef unsigned long UDWORD;
> +typedef unsigned int UDWORD;
> #endif
The correct solution is:
typedef uint32_t UDWORD;
Rich
More information about the MPlayer-dev-eng
mailing list