[FFmpeg-devel] [PATCH 0/7] ffmpeg: add a grow_array() helper function

Aurelien Jacobs aurel
Tue Aug 17 00:09:52 CEST 2010


On Mon, Aug 16, 2010 at 11:44:26AM -0400, Ronald S. Bultje wrote:
> Hi,
> 
> On Mon, Aug 16, 2010 at 2:00 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> > On Fri, Aug 13, 2010 at 08:28:12PM +0200, Aurelien Jacobs wrote:
> >> Ooops... I slightly messed up this patch serie.
> >> I forgot the first patch which adds a grow_array() function which is
> >> then used by all the following patches. Here it is.
> >> The rest of the serie changes each *[MAX_STREAMS] arrays from ffmpeg.c
> >> into a dynamically allocated array.
> >>
> >> Aurel
> >>
> >>
> >> diff --git a/ffmpeg.c b/ffmpeg.c
> >> index aec1f79..28ce27f 100644
> >> --- a/ffmpeg.c
> >> +++ b/ffmpeg.c
> >> @@ -646,6 +646,23 @@ static int ffmpeg_exit(int ret)
> >> ? ? ?return ret;
> >> ?}
> >>
> >> +static void *grow_array(void *array, int elem_size, int *size, int new_size)
> >> +{
> >> + ? ?if (*size < new_size) {
> >> + ? ? ? ?uint8_t *tmp = av_realloc(array, new_size*elem_size);
> >
> > integer overflow

Added a check.

> > also see ff_dynarray_add() and add notes that refer to it and back so changed
> > done to one can be checked if they would also be usefull to the other

Note added.

> Isn't this the same as av_fast_realloc()?

Not exactly. It is different from both ff_dynarray_add() and
av_fast_realloc(). This one indeed extand the size of an allocation, but
it also memset(0) the newly allocated part (to allow sparse array with
no uninitialized elements) and it keep track of the number of elements
in the array, instead of the size of the buffer.

Aurel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: grow_array.diff
Type: text/x-diff
Size: 1540 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100817/5331407d/attachment.diff>



More information about the ffmpeg-devel mailing list