[MPlayer-dev-eng] [PATCH] use av_malloc/av_free instead of malloc where missing memalign

Siarhei Siamashka siarhei.siamashka at gmail.com
Sun Oct 12 02:03:35 CEST 2008


On Sunday 12 October 2008, Gianluigi Tiesi wrote:
> Hi,
>
> currently mplayer uses malloc instead of memalign when memalign is not
> supported.
>
> while often align(64) is used for perfomarnce reasons
>
> align(16) is needed for sse code
>
> The attached patch fixes it in dec_audio.c that avoids
> crash while decoding an ogg vorbis

I may be misinterpreting something (C99 draft and 'man malloc'), but isn't
alignment of a pointer returned by malloc supposed to be sufficient for using
it with any data type supported on the target platform? That would mean that
the pointer returned by malloc must be at least 16 bytes aligned on the
systems supporting SSE instructions.

If this is the case, reporting a bug against nonconforming C library
implementation might be a good idea as well.

> I've seen a similar patch in liba52 that checks for mingw+sse
> but I think it's better to check for missing memalign
>
> there are also other places to be fixed, but it's a bit
> dangerous, since free() needs to be mapped to av_free __only__
> if the buffer is allocated with av_malloc
> (audio_dec -> a_buffer is ok to av_malloc/av_free,
> a_in_buffer leads to stack corruptions, free-ed somewhere else?)


-- 
Best regards,
Siarhei Siamashka



More information about the MPlayer-dev-eng mailing list