[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