workaround for double malloc if container_ffmpeg_stop is not called after file play to end

This commit is contained in:
Jacek Jendrzej
2019-02-21 19:46:27 +01:00
parent e9c53684e3
commit e51ad20c46

View File

@@ -1538,7 +1538,9 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, uin
0 == strncmp(filename, "file://", 7)) 0 == strncmp(filename, "file://", 7))
{ {
AVIOContext *avio_ctx = NULL; AVIOContext *avio_ctx = NULL;
custom_io_tab[AVIdx] = malloc(sizeof(CustomIOCtx_t)); if(custom_io_tab[AVIdx] == NULL)//workaround for double malloc if container_ffmpeg_stop is not called after file play to end
custom_io_tab[AVIdx] = malloc(sizeof(CustomIOCtx_t));
memset(custom_io_tab[AVIdx], 0x00, sizeof(CustomIOCtx_t)); memset(custom_io_tab[AVIdx], 0x00, sizeof(CustomIOCtx_t));
custom_io_tab[AVIdx]->szFile = filename; custom_io_tab[AVIdx]->szFile = filename;
@@ -2727,7 +2729,11 @@ static int32_t container_ffmpeg_stop(Context_t *context)
fclose(io->pFile); fclose(io->pFile);
if (io->pMoovFile) if (io->pMoovFile)
fclose(io->pMoovFile); fclose(io->pMoovFile);
free(custom_io_tab[i]); if(custom_io_tab[i] != NULL)
{
free(custom_io_tab[i]);
custom_io_tab[i] = NULL;
}
av_freep(&(avContextTab[i]->pb->buffer)); av_freep(&(avContextTab[i]->pb->buffer));
av_freep(&(avContextTab[i]->pb)); av_freep(&(avContextTab[i]->pb));
use_custom_io[i] = 0; use_custom_io[i] = 0;