[Ffmpeg-devel] [PATCH] from DivX, Part 7: MSVC fixes

Rich Felker dalias
Thu Jan 26 00:13:35 CET 2006


On Wed, Jan 25, 2006 at 10:09:17AM -1000, Steve Lhomme wrote:
> >>>+#if __STDC_VERSION__ >= 199901L
> >>>     uint8_t fixed[s->mb_stride * s->mb_height];
> >>>+#else
> >>>+    uint8_t *fixed=(uint8_t*)alloca(s->mb_stride * s->mb_height);
> >>>+#endif
> >>rejected
> >>
> >>#define A(type, name, size) type name[size];
> >>#define A(type, name, size) type *name= alloca(size * sizeof(type));
> >>
> >>would be cleaner but even then i would say that needs some disscussion and
> >>should be a seperate patch
> >
> >This is a somewhat dangerous thing to do, since it makes sizeof(name)
> >unpredictable.
> 
> I just checked, all the variables with this kind of change are never 
> used with sizeof().

alloca is not portable. Moreover the 'portable' alloca dropin for
systems missing it is implemented with malloc and evil garbage
collection hacks meaning it will cause memleaks.

C99 has vla's for a reason. It also lacks alloca for a reason. Don't
use legacy nonportable crap in place of proper standards to work
around MS's unwillingness to adhere to modern standards.

Rich





More information about the ffmpeg-devel mailing list