[alsa-devel] [PATCH] Sample generation on big endian platforms was broken.

Takashi Iwai tiwai at suse.de
Fri Jul 3 17:00:23 CEST 2009


At Fri, 03 Jul 2009 16:51:35 +0200,
Kenneth Johansson wrote:
> 
> On Fri, 2009-07-03 at 16:39 +0200, Takashi Iwai wrote:
> > At Fri, 03 Jul 2009 16:19:31 +0200,
> > Kenneth Johansson wrote:
> > > 
> > > Has not worked since commit 3d1fa924906996463ac33cba5b5143f762d913cf
> > > 
> > > Signed-off-by: Kenneth Johansson <kenneth at southpole.se>
> > 
> > Hrm, sorry, but your version is also broken as doing type-punning.
> > The code has to be rewritten completely...
> > 
> > 
> > Takashi
> 
> hmm I think you have to explain this. now it works on both little/big
> endian without any explicit byte moves.
> 
> It did not understand what problem you see.

You can't cast from a char pointer to another type (e.g. short) and
read the value.  This is called "type-punning" and doesn't work
properly with the recent GCC (depending on the optimization and
code parsing) since it handles strict-aliasing.

See GCC info for details.


Takashi


More information about the Alsa-devel mailing list