You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
avformat/utils: functions that add entries should not destroy the whole list on failure
The caller does not expect this, and in case of adding new streams would then not even be able to deallocate them anymore. This reverts a hunk from "avformat: Use av_reallocp_array() where suitable" Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -3296,11 +3296,14 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c)
|
|||||||
{
|
{
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
int i;
|
int i;
|
||||||
|
AVStream **streams;
|
||||||
|
|
||||||
if (av_reallocp_array(&s->streams, s->nb_streams + 1, sizeof(*s->streams)) < 0) {
|
if (s->nb_streams >= INT_MAX/sizeof(*streams))
|
||||||
s->nb_streams = 0;
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
streams = av_realloc(s->streams, (s->nb_streams + 1) * sizeof(*streams));
|
||||||
|
if (!streams)
|
||||||
|
return NULL;
|
||||||
|
s->streams = streams;
|
||||||
|
|
||||||
st = av_mallocz(sizeof(AVStream));
|
st = av_mallocz(sizeof(AVStream));
|
||||||
if (!st)
|
if (!st)
|
||||||
@@ -3404,6 +3407,7 @@ void ff_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int i
|
|||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
AVProgram *program=NULL;
|
AVProgram *program=NULL;
|
||||||
|
void *tmp;
|
||||||
|
|
||||||
if (idx >= ac->nb_streams) {
|
if (idx >= ac->nb_streams) {
|
||||||
av_log(ac, AV_LOG_ERROR, "stream index %d is not valid\n", idx);
|
av_log(ac, AV_LOG_ERROR, "stream index %d is not valid\n", idx);
|
||||||
@@ -3418,12 +3422,10 @@ void ff_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int i
|
|||||||
if(program->stream_index[j] == idx)
|
if(program->stream_index[j] == idx)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (av_reallocp_array(&program->stream_index,
|
tmp = av_realloc(program->stream_index, sizeof(unsigned int)*(program->nb_stream_indexes+1));
|
||||||
program->nb_stream_indexes + 1,
|
if(!tmp)
|
||||||
sizeof(*program->stream_index)) < 0) {
|
|
||||||
program->nb_stream_indexes = 0;
|
|
||||||
return;
|
return;
|
||||||
}
|
program->stream_index = tmp;
|
||||||
program->stream_index[program->nb_stream_indexes++] = idx;
|
program->stream_index[program->nb_stream_indexes++] = idx;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user